Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon ECS 入门

通过在 Amazon ECS 控制台中创建使用 EC2 运行类型的任务定义,计划任务和配置集群,开始使用 Amazon Elastic Container Service (Amazon ECS)。有关更多信息,请参阅Amazon ECS 启动类型

在不支持 AWS Fargate 的区域中,Amazon ECS 首次运行向导将引导您完成通过 EC2 开始使用任务的过程。该向导提供了创建集群和启动示例 Web 应用程序的选项。如果您已有在 Amazon ECS 中启动的 Docker 映像,可以使用该映像创建任务定义并改为将其用于集群。

重要

有关 Amazon ECS首次运行向导中 Fargate 任务的信息,请参阅 通过 Fargate 开始使用 Amazon ECS

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

完成以下任务,开始使用 Amazon ECS:

先决条件

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

首次运行向导会尝试自动创建 Amazon ECS 服务 IAM 和容器实例 IAM 角色。要确保首次运行时能够创建这些 IAM 角色,必须满足以下条件之一:

步骤 1:选择您的配置选项

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

    
                        选择您的配置选项

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

  2. 如果您选择创建 Amazon ECR 存储库,则完成首次运行向导接下来的两个部分 Configure repository (配置存储库)Build, tag, and push Docker image (构建、标记和推送 Docker 映像)。如果不创建 Amazon ECR 存储库,则向前跳至步骤 2:创建任务定义

配置存储库

存储库是您在 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. 选择完成

步骤 2:创建任务定义

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

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

  2. 从导航栏中,选择美国东部(加利福尼亚北部) 区域。

  3. 配置任务定义参数。

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

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

    注意

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

  4. 选择 Next (下一步)

步骤 3:配置服务

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

首次运行向导会预加载一个服务定义,您可以看到在控制台中定义的 sample-app-service 服务。您可以选择重命名服务,或者通过选择 Edit 并执行以下操作来查看和编辑详细信息:

  1. 对于 Service name (服务名称),为您的服务选择名称。

  2. 对于 Desired number of tasks (预期任务数),输入要使用您指定的任务定义启动的任务数。

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

    重要

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

    1. 选择 Application Load Balancer listener port (应用程序负载均衡器侦听器端口)。此处的默认值是为示例应用程序设置的,但您可为负载均衡器配置不同的侦听器选项。有关更多信息,请参阅服务负载均衡

    2. Application Load Balancer target group name (Application Load Balancer 目标组名称) 字段中,指定目标组的名称。

    3. Service IAM Role (服务 IAM 角色) 部分,选择您已创建的现有 Amazon ECS 服务 (ecsServiceRole) 角色,或选择 Create new role (创建新角色) 为服务创建所需的 IAM 角色。有关更多信息,请参阅 Amazon ECS 服务计划程序 IAM 角色

  4. 查看服务设置,然后选择 Next step (下一步)

步骤 4:配置集群

在向导的此部分中,命名您的集群。然后,Amazon ECS 将会为您完成网络和 IAM 配置。

  1. 对于 Cluster name (集群名称),选择集群的名称。

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

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

    注意

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

  4. 选择要用于您的容器实例的密钥对名称。使用 SSH 登录实例时需要此密钥对。如果不在此指定密钥对,则无法使用 SSH 连接到容器实例。如果还没有密钥对,您可以在 Amazon EC2 控制台中创建一个。有关更多信息,请参阅 Amazon EC2 密钥对

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

  6. Container instance IAM role (容器实例 IAM 角色) 部分,选择您已创建的现有 Amazon ECS 容器实例 (ecsInstanceRole) 角色,或选择 Create new role (创建新角色) 为容器实例创建所需的 IAM 角色。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

  7. 选择 Review & Launch (审核并启动)

步骤 5: 审核

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

  2. 在启动完成后,选择 View service (查看服务)

步骤 6:(可选)查看您的服务

如果您的服务是基于 Web 的应用程序 (如 Amazon ECS sample 应用程序),可以使用 Web 浏览器查看其容器。

  1. Service: service-name (服务: service-name) 页面上,选择 Tasks (任务)

  2. 从您的服务中的任务列表中选择任务。

  3. Network (网络) 部分中,选择您的任务的 ENI Id 值。这将转到 Amazon EC2 控制台,您可以在其中查看与任务关联的网络接口的详细信息,包括 IPv4 Public IP (IPv4 公有 IP) 地址。

  4. 在 Web 浏览器中,输入 IPv4 Public IP (IPv4 公有 IP) 地址,您应该可以看到显示 Amazon ECS sample 应用程序的网页。