Amazon EC2 Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

开始使用 Amazon ECS

让我们通过在 Amazon ECS 控制台中创建任务定义、计划任务和配置集群来开始使用 Amazon EC2 Container Service (Amazon ECS)。

您也可选择创建 Amazon EC2 Container Registry (Amazon ECR) 映像存储库并将映像推送到库中。有关 Amazon ECR 的更多信息,请参阅 Amazon EC2 Container Registry 用户指南

Amazon ECS 首次运行向导将会引导您完成开始使用 Amazon ECS 的过程。此向导为您提供了创建集群和启动我们的示例 Web 应用程序的选项,或者,如果您已有一个要在 Amazon ECS 中启动的 Docker 映像,则可通过该映像创建任务定义并将其用于您的集群。

重要

在开始之前,请确保完成Amazon ECS 的设置中的步骤,并且您的 AWS 用户具有 Amazon ECS 首次运行向导 IAM 策略示例中指定的必要权限。

选择 Amazon ECS 首次运行向导配置选项

  1. 打开 https://console.amazonaws.cn/ecs/home#/firstRun 上的 Amazon ECS 控制台首次运行向导。

  2. 选择您的 Amazon ECS 首次运行选项。

     选择您的配置选项

    要创建 Amazon ECS 集群并向其部署容器应用程序,请选中顶部选项。要创建 Amazon ECR 存储库并将映像推送到库中(您可在 Amazon ECS 任务定义中使用该库),请选中底部选项。选择 Continue 以继续。

  3. 如果您选择创建 Amazon ECR 存储库,则完成首次运行向导接下来的两个部分 Configure repositoryBuild, tag, and push Docker image。如果您不创建 Amazon ECR 存储库,则向前跳至创建任务定义

配置存储库

存储库是您在 Amazon ECR 中存储 Docker 镜像的位置。当您在 Amazon ECR 中推送或拉取映像时,您将指定注册表和存储库位置以告知 Docker 将映像推送到哪个位置或从哪个位置拉取映像。

  • 对于 Repository name,输入存储库的唯一名称并选择 Next step

构建、标记和推送 Docker 映像

在向导的此部分中,您使用 Docker CLI 标记现有本地映像(您从 Dockerfile 构建或从另一个注册表中拉取的映像,例如 Docker Hub),然后将标记的映像推送到 Amazon ECR 注册表。

  1. 检索 docker login 命令,此命令可用于通过将控制台中的 aws ecr get-login 命令粘贴到终端窗口中来对注册表验证 Docker 客户端。

    注意

    AWS CLI 从版本 1.9.15 开始提供 get-login 命令;但对于较新的 Docker 版本 (17.06 或更高版本),我们建议使用 1.11.91 或更高版本。您可以使用 aws --version 命令查看 AWS CLI 的版本。如果您使用的是 Docker 17.06 或更高版本,请在 get-login 后包含 --no-include-email 选项。如果收到 Unknown options: --no-include-email 错误,请安装最新版本的 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的安装 AWS 命令行界面

  2. 运行上一步中返回的 docker login 命令。此命令提供一个在 12 小时内有效的授权令牌。

    重要

    在执行此 docker login 命令时,进程列表 (ps -e) 显示中将为系统上的其他用户显示命令字符串。由于 docker login 命令包含验证凭证,因此系统上的其他用户可按此方式查看凭证并使用这些凭证来获取对存储库的推送和拉取访问权会带来风险。如果您所在的系统不安全,则应考虑此风险,并通过省略 -p password 选项并在系统提示时输入密码来以交互方式登录。

  3. (可选) 如果您有要让映像推送的 Dockerfile,请通过将控制台中的 docker build 命令粘贴到终端窗口来为新存储库构建并标记映像。确定您与您的 Dockerfile 在同一目录中。

  4. 通过将控制台中的 docker tag 命令粘贴到终端窗口中来为 ECR 注册表和新存储库标记映像。控制台命令假定您已在上一步中从 Dockerfile 构建映像;如果您未从 Dockerfile 构建映像,请将 repository:latest 的第一个实例替换为要推送的本地映像的映像 ID 或映像名。

  5. 通过将 docker push 命令粘贴到终端窗口中来将新标记的映像推送到 ECR 存储库。

  6. 选择完成

创建任务定义

任务定义就像是您的应用程序的蓝图。每次在 Amazon ECS 中启动任务时,您均应指定一个任务定义,以便服务知道要用于容器的 Docker 映像、任务中要使用的容器数量以及为每个容器分配的资源。

  1. 配置任务定义参数。

    首次运行向导会预加载一个任务定义,您可以看到在控制台中定义的 simple-app 容器。(可选)您可以选择重命名任务定义或通过选择容器名称并编辑显示的值(CPU 单位数位于 Advanced container configuration 菜单下)来查看和编辑容器使用的资源。为简单起见,首次运行向导中创建的任务定义仅限用于一个容器。您之后可在 Amazon ECS 控制台中创建多容器任务定义。

    注意

    如果您在任务定义中使用的是 Amazon ECR 映像,请确保对您的 Amazon ECR 映像使用完整的 registry/repository:tag 命名。例如,aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest

    有关每个任务定义参数的作用的更多信息,请参阅任务定义参数

  2. 选择 Next step 以继续。

配置服务

在向导的此部分中,您可选择您希望配置通过任务定义创建的 Amazon ECS 服务的方式。一个服务将会启动并在您的集群中维护指定数量的任务定义副本。Amazon ECS sample 应用程序是一个基于 Web 的“Hello World”样式应用程序,可无限期地运行,因此通过将它作为服务运行,它将会在任务出现不正常或意外停止时重新启动。

  1. Service Name 字段中,为您的服务选择一个名称。

  2. Desired number of tasks 字段中,输入您要使用指定的任务定义启动的任务数量。

    注意

    如果您的任务定义包含静态端口映射,则您在向导的下一部分中启动的容器实例的数量必须大于或等于在此处指定的任务数量。

  3. (可选) 您可选择对您的服务使用 Application Load Balancer。从配置为使用负载均衡器的服务启动一个任务时,将会向负载均衡器注册启动该任务的容器实例,来自负载均衡器的流量将会分布到负载均衡器中的各个实例中。有关更多信息,请参阅 Application Load Balancer 简介

    重要

    AWS 资源中有 应用程序负载均衡器 时,将产生相应费用。有关 应用程序负载均衡器 定价的更多信息,请参阅 应用程序负载均衡器 定价

    完成下列步骤以对服务使用负载均衡器。

    1. Application load balancing 部分,选择 Container name : container port : protocol 菜单,然后选择 simple-app:80:tcp。此处的默认值是为示例应用程序设置的,但您可为负载均衡器配置不同的侦听器选项。有关更多信息,请参阅 服务负载均衡

    2. Service IAM Role 部分,选择 Select IAM role for service 菜单,然后选择您已创建的现有 Amazon ECS 服务 (ecsServiceRole) 角色,或单击 Create new role 来为您的服务创建所需的 IAM 角色。

  4. 查看负载均衡器设置,然后单击 Next Step

配置集群

在向导的此部分,您将命名您的集群,然后配置可放置您的任务的容器实例、可从中访问您的实例和负载均衡器的地址范围,以及用于您的容器实例的 IAM 角色(让 Amazon ECS 为您处理此配置)。

  1. Cluster name 字段中,选择集群的名称。

  2. EC2 instance type 字段中,选择要用于您的容器实例的实例类型。具有更多 CPU 和内存资源的实例类型可处理更多任务。有关各种实例类型的更多信息,请参阅 Amazon EC2 实例

  3. Number of instances 字段中,键入您要在集群中启动的用于放置任务的 Amazon EC2 实例的数量。您在集群中的实例越多,您可在其中放置的任务就越多。Amazon EC2 实例在您的 AWS 资源中的存在期间将会产生费用。有关更多信息,请参阅 Amazon EC2 定价

    注意

    如果您创建的服务中有多个将容器端口公开给容器实例端口的所需任务(如 Amazon ECS sample 应用程序),则至少需要在此处指定相同数量的实例。

  4. 选择要用于您的容器实例的密钥对名称。您使用 SSH 登录实例时需要此密钥对;如果您在此处未指定密钥对,则无法使用 SSH 连接到容器实例。如果您没有密钥对,在可在位于 https://console.amazonaws.cn/ec2/ 的 Amazon EC2 控制台中创建一个。

  5. (可选)在 Security Group 部分,您可选择一个用于限制对实例的访问的 CIDR 块。默认值 (Anywhere) 允许来自整个 Internet 的访问。

  6. Container instance IAM role 部分,选择您已创建的现有 Amazon ECS 容器实例 (ecsInstanceRole) 角色,或选择 Create new role 来为您的容器实例创建所需的 IAM 角色。

  7. 单击 Review and Launch 以继续。

审核

  1. 查看您的任务定义、任务配置和集群配置,然后单击 Launch Instance & Run Service 以完成操作。您将会转到 Launch Status 页面,此页面显示您的启动状态并描述此过程的每一步(在创建和填充您的 Auto Scaling 组时,这可能需要几分钟时间才能完成)。

  2. 在启动完成后,选择 View service 以在 Amazon ECS 控制台中查看您的服务。