设计您的应用程序 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设计您的应用程序

您可以通过为应用程序创建任务定义来构建应用程序。任务定义包含用于定义应用程序信息的参数,包括:

  • 要使用的启动类型,它决定了托管任务的基础架构。

    使用 EC2 启动类型时,您还需要选择实例类型。对于某些实例类型,例如 GPU,您需要设置其他参数。有关更多信息,请参阅 任务定义应用场景

  • 容器镜像,其中包含您的应用程序代码和应用程序代码运行所需的所有依赖项。

  • 任务中容器使用的联网模式

    联网模式决定了您的任务如何通过网络进行通信。

    对于在 EC2 实例上运行的任务,有多个选项,但我们建议您使用awsvpc网络模式。awsvpc网络模式简化了容器联网,因为您可以更好地控制应用程序彼此通信的方式,以及 VPC 中其他服务的通信方式。

    对于在 Fargate 上运行的任务,您只能使用awsvpc网络模式。

  • 用于任务的日志配置。

  • 与任务中的容器一起使用的任何数据卷。

要获得任务定义参数的完整列表,请参阅 任务定义参数

创建任务定义时,请遵循以下准则:

  • 将每个任务定义系列仅用于一个业务目的。

    如果您在同一个任务定义中将多种类型的应用程序容器分组在一起,则无法独立扩展这些容器。例如,网站和 API 不太可能要求以相同的速度进行横向扩展。随着流量的增加,所需的 Web 容器数量将与 API 容器数量不同。如果这两个容器部署在同一个任务定义中,则每个任务会运行相同数量的 Web 容器和 API 容器。

  • 将每个应用程序版本与任务定义系列中的任务定义修订版进行匹配。

    在任务定义系列中,将每个任务定义修订版视为特定容器映像设置的时间点快照。这类似于容器是一个快照,其中包含运行特定版本应用程序代码所需的所有内容。

    确保应用程序代码版本、容器镜像标签和任务定义修订版之间存在映 one-to-one 射。典型的发布过程涉及一个 git commit,它会变成一个标有 git commit SHA 的容器映像。然后,该容器映像标签将获得自己的 Amazon ECS 任务定义修订版。最后,对 Amazon ECS 服务进行了更新,告诉它部署新的任务定义修订版。

  • 为每个任务定义系列使用不同的 IAM 角色。

    使用自己的 IAM 角色定义每个任务定义。该建议应与我们的建议同时提出,以为每个业务组件提供自己的任务定义系列。通过实施这两种最佳实践,您可以限制每项服务对您 Amazon 账户中资源的访问权限。例如,您可以授予身份验证服务访问权限,以连接到您的密码数据库。同时,您还可以确保只有您的订单服务才能访问信用卡付款信息。