问:什么是 Amazon EC2 Container Service?

Amazon EC2 Container Service (ECS) 是一项高度可扩展的高性能容器管理服务,它支持 Docker 容器,并让您能够在托管的 Amazon EC2 实例群集上轻松运行应用程序。使用 Amazon ECS,您将不再需要安装、运维、扩展您的群集管理基础设施。只需进行简单的 API 调用,您便可以启动和停止支持容器的应用程序,查询群集的完整状态,使用各种熟悉的功能,包括安全组、Elastic Load Balancing、EBS 卷和 IAM 角色。您可以使用 Amazon ECS 根据您的资源需求和可用性要求在您的群集中安排容器的置放。您还可以集成自己的计划程序或第三方计划程序,来满足业务或应用程序的特定要求。

问:为什么应该使用 Amazon ECS?

使用 Amazon ECS,您将不再需要安装、运营、扩展自己的群集管理基础设施;您可以将 Amazon ECS 用作应用程序的构建块,非常方便。Amazon ECS 让您可以使用 Docker 容器来安排长期运行的应用程序、服务和批量进程。Amazon ECS 可以维持应用程序的可用性,让您根据应用程序的容量需求对容器进行扩缩。Amazon ECS 集成了您熟悉的功能,包括 Elastic Load Balancing、EBS 卷、VPC 和 IAM。简单的 API 让您可以集成并使用自己的计划程序,或将 Amazon ECS 接入现有的软件交付流程中。

问:Amazon ECS 如何定价?

使用 Amazon ECS 不收取任何额外费用。您只需为您创建的用于存储和运行应用程序的 AWS 资源 (例如 EC2 实例或 EBS 卷) 付费。您只需按您的实际用量付费;既没有最低费用,也无需预付费。请访问此处,了解更多定价信息。

问:Amazon ECS 与 AWS Elastic Beanstalk 有什么区别?

AWS Elastic Beanstalk 是一个应用程序管理平台,可以帮助客户轻松部署和扩展 Web 应用程序和服务。它将构建块 (例如,EC2、RDS、Elastic Load Balancing、Auto Scaling、CloudWatch) 的预置、应用程序的部署、运行状况监控从用户身上分离出来,让用户可以集中精力编写代码。您只需要指定要部署的容器镜像、CPU 和内存要求、端口映射和容器链接。Elastic Beanstalk 将自动处理所有具体事务,包括预置 Amazon ECS 群集、均衡负载、自动扩展、监控以及在群集中放置容器。

如果您希望利用容器的各种优势,但只想通过上传容器镜像获得从开发到生产环节部署应用程序的简易性,则 Elastic Beanstalk 是理想的选择。如果您需要对自定义应用程序架构进行更多精细化的控制,则可以直接使用 Amazon ECS。 


问:如何开始使用 Amazon ECS?

请访问我们的文档,详细了解如何开始使用 Amazon ECS。

问:EC2 Container Service 是否支持任何其他容器类型?

不可以。EC2 Container Service 目前只支持 Docker 这一容器平台。

问:我想启动容器。为什么必须启动任务?

Docker 鼓励您将您的应用程序分成单个组件,EC2 Container Service 还针对此模式进行了优化。通过任务,您可以定义一组您想将其置放在一起 (或同一置放决策中) 的容器、它们的属性及其关联方式。任务包括 EC2 Container Service 作出置放决策所需的一切信息。要启动单个容器,您的任务定义应只包含一个容器定义。

问:Amazon ECS 是否支持应用程序和服务?

是。Amazon ECS 服务计划程序可以管理长期运行的应用程序和服务。服务计划程序可以帮助您维持应用程序的可用性,让您根据应用程序的容量需求扩展或缩小容器。借助服务计划程序,您可以使用 Elastic Load Balancing 在各个容器间分配流量。Amazon ECS 将自动从关联的负载均衡器注册和注销容器。服务计划程序还可自动恢复运行状况不佳 (ELB 运行状况检查失败) 的容器,或停止运行,以保证您拥有所需数量的运行状况良好的容器来支持您的应用程序。通过改变您希望服务运行的容器的数量,可以扩展或缩小应用程序的规模。您可以通过改变应用程序的定义或使用新镜像,来更新应用程序。计划程序将自动启动使用新定义的新容器并停止运行之前版本的容器 (如果使用 ELB,则会等待 ELB 连接耗尽)。

问:Amazon ECS 是否支持动态端口映射?

可以。可以将 Amazon EC2 Container Service (ECS) 上的服务与 Application Load Balancer 相关联,以实现 Elastic Load Balancing (ELB) 服务。Application Load Balancer 支持包含一组实例端口的目标组。您可以在 ECS 任务定义中指定动态端口,这可为安排在 EC2 实例上的容器提供未使用的端口。ECS 计划程序将使用此端口将任务自动添加到 Application Load Balancer 的目标组。

问:Amazon ECS 是否支持批量作业?

可以。可以使用 Amazon ECS Run 任务一次运行一个或多个任务。Run 任务在符合任务要求的实例 (包括 CPU、内存和端口) 中启动任务。

问:能否对 Amazon ECS 使用自己的计划程序?

ECS 提供了 Blox,这是一个用于容器管理和编排的开源对象集合。借助 Blox,您可以轻松使用 Amazon ECS 事件、本地存储群集状态以及通过 API 查询本地数据存储。此外,Blox 还包含一个守护程序计划程序,可用作关于如何使用群集状态服务器的引用。请参阅 Blox GitHub 页面了解更多信息。

问:能否使用我自己的 AMI?

可以。您可以使用满足 Amazon ECS AMI 规范的任何 AMI。我们建议先从支持 Amazon ECS 的 Amazon Linux AMI 开始用起。也可以使用兼容 Amazon ECS 的合作伙伴 AMI。您可以在文档中查阅 Amazon ECS AMI 规范。

问:我应该如何配置我的容器实例,以便从 Amazon EC2 容器注册表中提取?

Amazon ECR 与 Amazon ECS 集成,让您能够轻松地存储、运行和管理在 Amazon ECS 上运行的应用程序的容器镜像。为此,您只需在您的任务定义中指定 Amazon ECR 存储库,然后将 AmazonEC2ContainerServiceforEC2Role 挂载至您的实例。然后 Amazon ECS 将为您的应用程序检索相应的镜像。


问:Amazon ECS 如何隔离属于不同客户的容器?

Amazon ECS 在客户控制的 Amazon EC2 实例中排定容器的执行,同时以 EC2 客户拥有的相同控制功能和合规性为基础来进行构建。

  • 您的计算实例位于 Amazon VPC 中,它具您指定的 IP 范围。您可以决定哪些实例向互联网公开,哪些实例保持私有状态。
  • 您的 EC2 实例使用 IAM 角色访问 ECS 服务。
  • 您的 ECS 任务使用 IAM 角色访问服务和资源。
  • 安全组和网络 ACL 让您能控制进入和离开您的实例的入站和出站网络访问。
  • 您可以通过工业标准的加密 IPsec VPN 连接,将您现有的 IT 基础设施关联到 VPC 中的资源。
  • 您可以将您的 EC2 资源预配置为专用实例。专用实例是为了增加额外的隔离,在单一客户的专用硬件上运行的 Amazon EC2 实例。

问:能否对容器实例应用额外的安全配置和隔离框架?

可以。作为 Amazon EC2 客户,您拥有对容器实例操作系统的根访问权限,这让您在掌控操作系统安全设置的同时还控制着其他软件组件的加载和配置,以获得更多安全功能,例如,监控、补丁管理、日志管理和主机入侵检测。

问:能否针对容器实例采用不同的安全设置,或者将不同的任务隔离在不同的环境中?

可以。您可以使用您选择的工具配置不同的容器实例。通过构建群集和有针对性的启动,Amazon ECS 让您能够控制不同容器实例中的任务放置。

问:Amazon ECS 是否支持从私有或内部来源中提取的 Docker 镜像?

可以。客户可以对其容器实例进行配置,以便访问 VPC 内的专有 Docker 镜像注册表或者可从 VPC 外部访问的注册表,例如 Amazon EC2 容器注册表

问:如何为 ECS 任务配置 IAM 角色?

首先,您需要为您的任务创建 IAM 角色,使用“Amazon EC2 Container Service Task Role”服务角色并挂载必要的权限策略即可成功创建。当您新建一项任务定义或修订任务定义时,您可以从“Task Role”下拉列表中选择一个角色,或使用以 JSON 格式存储的“taskRoleArn”来指定角色。