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 EC2 Container Service?

Amazon EC2 Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,它可轻松运行、停止和管理 Amazon Elastic Compute Cloud (Amazon EC2) 实例集群上的 Docker 容器。利用 Amazon ECS,您可以通过简单的 API 调用来启动和停止基于容器的应用程序,可以从集中式服务获取集群状态,并且可以访问许多熟悉的 Amazon EC2 功能。

您可以根据您的资源需求、隔离策略和可用性要求使用 Amazon ECS 计划容器在集群中的放置。借助 Amazon ECS,您无需操作自己的集群管理和配置管理系统,也无需担心扩展管理基础设施。

Amazon ECS 可用于创建一致的部署和构建体验、管理和扩展批处理和提取-转换-加载 (ETL) 工作负载以及在微服务模型上构建先进的应用程序架构。有关 Amazon ECS 使用案例和方案的更多信息,请参阅容器使用案例

AWS Elastic Beanstalk 还可用于快速开发、测试和部署 Docker 容器以及应用程序基础设施的其他组件;而直接使用 Amazon ECS 将提供对一系列更广泛的使用案例的更精细的控制和访问。有关更多信息,请参阅 AWS Elastic Beanstalk 开发人员指南

Amazon ECS 的功能

Amazon ECS 是一项区域服务,可在区域内的多个可用区中以高度可用的方式简化正在运行的应用程序容器。您可以在新的或现有的 VPC 中创建 Amazon ECS 集群。在集群启动并运行后,您可以定义用于指定在集群中运行的 Docker 容器映像的任务定义和服务。容器映像将在容器注册表中存储和提取,可能存在于您的 AWS 基础设施的内部或外部。

以下部分将更详细地深入探究 Amazon ECS 基础设施的各个元素。

容器和映像

要在 Amazon ECS 上部署应用程序,必须构建您的应用程序组件以在容器 中运行。Docker 容器是一个软件开发的标准化单位,包含您的软件应用程序需要运行的一切:代码、运行时、系统工具、系统库等。从称为映像 的只读模板中创建容器。

映像通常通过 Dockerfile 进行构建,后者是一个纯文本文件,指定了容器中包含的所有组件。随后,这些映像将存储在注册表 中,可从该表中下载映像并在您的容器实例上运行映像。有关容器技术的更多信息,请参阅 Docker 基本知识

任务定义

为了准备要在 Amazon ECS 上运行的应用程序,您创建了任务定义。任务定义是一种 JSON 格式的文本文件,描述了构成应用程序的一个或多个容器。它可以被视为应用程序的蓝图。任务定义指定应用程序的各种参数,例如:要使用的容器以及这些容器所在的存储库、应用程序的容器实例上应开放的端口以及任务中应与容器结合使用的数据卷。有关创建任务定义的更多信息,请参阅 Amazon ECS 任务定义

以下是包含运行 Nginx Web 服务器的单个容器的简单任务定义的示例。有关演示在任务定义中使用多个容器的更扩展的示例,请参阅示例任务定义

{
      "family": "webserver",
      "containerDefinitions": [
      {
              "name": "web",
              "image": "nginx",
              "cpu": 99,
              "memory": 100,
              "portMappings": [{
                      "containerPort": 80,
                      "hostPort": 80
              }]
      }]
}

任务和计划

任务 是集群内容器实例上的任务定义的实例化。在为 Amazon ECS 中的应用程序创建任务定义后,您可以指定将在集群上运行的任务的数量。

Amazon ECS 任务计划程序负责将任务放置到容器实例中。有多种不同的计划选项可供选择。例如,您可以定义同时运行和维护指定数量的任务的服务。有关可用的不同计划选项的更多信息,请参阅计划 Amazon ECS 任务

集群

当您使用 Amazon ECS 运行任务时,会将任务放置在集群 上,这是 EC2 实例的逻辑分组。Amazon ECS 从您指定的注册表中下载容器映像,并在集群内的容器实例上运行这些映像。

有关创建集群的更多信息,请参见 Amazon ECS 集群。有关创建容器实例的更多信息,请参阅 Amazon ECS 容器实例

容器代理

容器代理 在 Amazon ECS 集群内的每个实例上运行。它向 Amazon ECS 发送有关实例的当前正在运行的任务和资源使用率的信息,并且在接收来自 Amazon ECS 的请求时启动和停止任务。有关更多信息,请参阅 Amazon ECS 容器代理

如何开始使用 Amazon ECS

如果您是第一次使用 Amazon ECS,则 Amazon ECS 的 AWS 管理控制台将为您提供一个首次运行向导,该向导将逐步指导您为 Web 服务器定义任务定义、配置服务以及启动您的首个集群。强烈建议之前从未使用过 Amazon ECS 的用户使用此首次运行向导。有关更多信息,请参阅 开始使用 Amazon ECS教程。

或者,您可以安装 AWS Command Line Interface (AWS CLI) 以使用 Amazon ECS。有关更多信息,请参阅 Amazon ECS 的设置

相关服务

Amazon ECS 可与以下 AWS 服务一起使用:

AWS Identity and Access Management

IAM 是一项 Web 服务,可帮助您安全地控制用户对 AWS 资源的访问。通过 IAM 可以控制哪些人可以使用您的 AWS 资源(身份验证)以及他们可以使用的资源和采用的方式(授权)。在 Amazon ECS 中,IAM 可用于控制容器实例级别的访问(使用 IAM 角色)以及任务级别的访问(使用 IAM 任务角色)。有关更多信息,请参阅 Amazon ECS IAM 策略、角色和权限

Auto Scaling

Auto Scaling 是一项 Web 服务,使您能够根据用户定义的策略、运行状况检查和时间表自动启动或终止 EC2 实例。您可以使用 Auto Scaling 向外扩展和向内扩展集群内的容器实例以响应大量指标。有关更多信息,请参阅 教程:通过 CloudWatch 警报扩展容器实例

Elastic Load Balancing

Elastic Load Balancing 跨云中的多个 EC2 实例自动分配传入的应用程序流量。它可以让您实现更高水平的应用程序容错性能,同时持续提供分配应用程序流量所需的负载均衡容量。您可以使用 Elastic Load Balancing 创建一个使集群中的服务流量达到均衡的终端节点。有关更多信息,请参阅 服务负载均衡

Amazon EC2 Container Registry

Amazon ECR 是一项托管 AWS Docker 注册表服务,它安全、可扩展且可靠。Amazon ECR 通过使用 IAM 支持具有基于资源的权限的私有 Docker 存储库,以便特定用户或 EC2 实例能够访问存储库和映像。开发人员可以使用 Docker CLI 推送、拉取和管理映像。有关更多信息,请参阅 Amazon EC2 Container Registry 用户指南

AWS CloudFormation

AWS CloudFormation 向开发人员和系统管理员提供了一种简便地创建和管理一批相关的 AWS 资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。您可以在 AWS CloudFormation 脚本中将集群、任务定义和服务定义为实体。有关更多信息,请参阅 AWS CloudFormation 模板参考

访问 Amazon ECS

您可以通过以下任何方式使用 Amazon ECS:

AWS 管理控制台

此控制台是用于管理 Amazon ECS 资源的基于浏览器的界面。有关指导您使用控制台的教程,请参阅 开始使用 Amazon ECS

AWS 命令行工具

您可以使用 AWS 命令行工具在系统的命令行上发出命令以执行 Amazon ECS 和 AWS 任务;这比使用控制台更快且更方便。命令行工具也非常适用于构建执行 AWS 任务的脚本。

AWS 提供两组命令行工具:AWS Command Line Interface (AWS CLI) 和适用于 Windows PowerShell 的 AWS 工具。有关更多信息,请参阅 AWS Command Line Interface 用户指南适用于 Windows PowerShell 的 AWS 工具 用户指南

Amazon ECS CLI

除了使用 AWS CLI 访问 Amazon ECS 资源外,您还可以使用 Amazon ECS CLI,它提供一些高级命令,可用于简化通过 Docker Compose 从本地开发环境创建、更新和监控集群和任务的过程。有关更多信息,请参阅 使用 Amazon ECS 命令行界面

AWS 开发工具包

此外,我们还提供了软件开发工具包,这些软件开发工具包可让您通过一系列编程语言访问 Amazon ECS。软件开发工具包自动处理以下任务,如:

  • 使用密码对服务请求签名

  • 重试请求

  • 处理错误响应

有关可用软件开发工具包的更多信息,请参阅适用于 Amazon Web Services 的工具

定价

在用于托管应用程序的基础 AWS 资源之外使用 Amazon ECS 不会产生任何额外费用。有关更多信息,请参阅 Amazon EC2 Container Service 定价