一般性问题

问:什么是 Amazon Elastic Container Service?

Amazon Elastic 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 与 AWS Lambda 有什么区别?

Amazon Container Service 是一项高度可扩展的 Docker 容器管理服务,让您可以运行和管理在 Docker 容器中运行的分布式应用程序。AWS Lambda 是一项事件驱动型任务计算服务,在响应数据更改、网站点击或来自其他 AWS 服务的消息等“事件”时运行您的代码,无需您管理任何计算基础设施。

使用 Amazon ECS

问:怎样开始使用 Amazon ECS?

请访问我们的入门页面,了解有关如何开始使用 ECS 的更多信息。

问:Amazon ECS 是否支持任何其他容器类型?

不支持。Amazon ECS 目前只支持 Docker 这一容器平台。

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

Docker 鼓励您将应用程序分成单个组件,而 Elastic Container Service 针对这一模式进行了优化。任务让您可以定义想要放置在一起的一组容器或一部分容器、容器的属性及其链接方式。任务中包含 Amazon ECS 确定如何放置所需的所有信息。要启动单个容器,您的任务定义中应该只包含一个容器定义。

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

支持。Amazon ECS 服务计划程序可以管理长期运行的应用程序和服务。使用服务计划程序,您可以维持应用程序的可用性,并且根据应用程序的要求来扩展或缩小容器。服务计划程序让您可以使用 Elastic Load Balancing 在各个容器间分配流量。Amazon ECS 将自动从关联的负载均衡器注册和注销容器。

服务计划程序还将自动恢复运行状况不佳(ELB 运行状况检查失败)或停止运行的容器,保证正常运行的容器达到所需数量,以便支持您的应用程序。

通过改变您希望服务运行的容器的数量,可以扩展或缩小应用程序的规模。改变应用程序的定义或使用新的映像可以更新应用程序。计划程序将自动启动使用新定义的新容器并停止运行之前版本的容器(如果使用 ELB,则会等待 ELB 连接耗尽)。

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

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

问: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 Elastic Container 注册表中提取?

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

问:AWS Fargate 怎样与 Amazon ECS 配合发挥作用?

使用 Fargate 便可完全抛弃服务器预置、集群管理和编排的概念。Amazon ECS 使用 Fargate 预置的容器对您的容器进行自动扩展、负载均衡和计划管理工作以便保证可用性,让您可以更轻松地构建和运行容器化应用程序。

问:怎样在 AWS Fargate 加 Amazon ECS 和只使用 ECS 之间做出选择?

Amazon ECS 支持 Fargate 技术,客户可以选择使用 AWS Fargate 来启动容器,无需预置或管理 EC2 实例。AWS Fargate 是在 AWS 上启动和运行容器的最易用的工具。如果客户需要对 EC2 实例进行更高的控制,以便满足合规和监管要求或者支持更多的自定义选项,则可以只使用 ECS 而不使用 Fargate 来启动 EC2 实例。

安全性与合规性

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

Amazon ECS 在客户控制的 Amazon EC2 实例中排定容器的执行,或者使用 AWS Fargate 排定容器的执行,其隔离控制功能和合规性与 EC2 相同。您的计算实例位于 Virtual Private Cloud (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 ECR

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

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

问:Amazon ECS 符合哪些合规性计划?

Amazon ECS 符合 PCI DSS 第 1 级、ISO 9001、ISO 27001、ISO 27017、ISO 27018、SOC 1、SOC 2、SOC 3 和 HIPAA 要求的标准。

有关更多信息,请访问我们的合规性页面

问:是否可以使用 Amazon ECS 处理受保护健康信息 (PHI) 和其他受 HIPAA 监管的工作负载?

可以。Amazon ECS 符合 HIPAA 要求。如果您已与 AWS 签署商业伙伴增订合约 (BAA),您可以利用 Amazon ECS,对于采用部署到 AWS Fargate 的启动类型或 Amazon EC2 计算实例的 Docker 容器的加密受保护健康信息 (PHI) 进行处理。

有关更多信息,请访问我们的 HIPAA 合规性页面。如果您打算处理、存储或传输 PHI 且尚未与 AWS 签署 BAA,请联系我们获取更多信息。

问:是否可以使用 Amazon ECS 处理受美国政府监管的工作负载,或处理敏感的受控非机密信息 (CUI)?

可以。利用 AWS GovCloud(美国)区域,由 Amazon ECS 管理的容器和集群也能满足您的容器的敏感数据和受监管工作负载的要求。

有关更多信息,请访问我们的 AWS GovCloud 页面。

服务等级协议 (SLA)

问:Amazon ECS 的 SLA 有什么保证?

我们的计算 SLA 保证 Amazon ECS 的月度正常运行时间百分比至少达到 99.99%。

问:怎样确定我是否有资格获得 SLA 服务抵扣?

对于您运行任务所在的可用区,如果同一个区域内有一个以上的可用区在任何月度账单周期内的月度正常运行时间百分比没有达到 99.99%,那么您就有资格获得计算 SLA 规定的 Amazon ECS SLA 服务抵扣。

如需 SLA 的所有条款与条件的完整详细信息,以及如何提交索赔的详细信息,请参阅计算 SLA 详细信息页面

过渡到新的 ARN 和 ID 格式

问:会发生怎样的变化?

从 2018 年 11 月 15 日开始,Amazon ECS 资源将过渡到新的 Amazon 资源名称 (ARN) 和标识符 (ID) 格式。Amazon 资源名称的格式更改将会对 ECS 任务、ECS 容器实例和 ECS 服务产生影响。标识符的格式更改将会对 ECS 任务和 ECS 容器实例产生影响。这些更改将支持最近推出的标记和成本分配功能。

从即日起,您可以选择使用新的标记功能,并让您的 ECS 资源采用新的 ARN 和 ID 格式。在您选择采用新格式后,新的 ARN 和 ID 格式将应用于新创建的资源;您现有的资源不会受到影响,并会保留其现有的 ARN 和 ID。有关说明,请参阅此文档。

问:这对我有什么影响?

在许多情况下,您无需对系统进行任何更改即可使用新格式。如果您只使用控制台来管理 AWS 资源,则不会受到影响,但还是应该更新设置以使用新的 ARN 和 ID 格式。如果您通过 API、软件开发工具包或 AWS CLI 与 AWS 资源交互,则可能会受到影响,具体取决于您的软件在验证或保存资源的 ARN 或 ID 时是否会假设 ARN 或 ID 格式。如果会进行假设,您就需要更新系统才能使用新的格式。

例如,遇到下列情况时就可能会引发故障:

如果您的系统使用正则表达式来验证 ARN 或 ID 格式,或者对其进行解析以从中提取信息,则在其遇到新格式时,您可能会看到错误。

如果系统对数据库 schema 中的 ARN 或 ID 长度有预期,您可能无法存储它们,尤其是在新 ARN 包含更多信息因而更长的情况下。新 ID 比较短。

问:这会对现有资源产生影响吗?

不会,只有在您选择采用新格式后创建的资源才会采用新格式。在系统为资源分配了 ARN/ID(不管是旧格式或新格式)后,该资源将在整个生命周期内保留其 ARN/ID,无论您随后可能采取任何选用或取消选用操作都是如此。例如,如果在您选择采用新格式前有现有的 ECS 服务,那么在您选择采用新格式后,该 ECS 服务将保留其旧的 ARN/ID。但是,在您选择采用新格式后由该 ECS 服务启动的所有新任务都将具有新的 ARN。

问:哪些 ECS 资源 ARN 将发生变化?

ARN 更改将会对 3 种资源产生影响:ECS 服务、ECS 任务和 ECS 容器实例。

问:新 ARN 将采用什么格式?

ECS 容器实例、服务和任务的新 ARN 将包含集群名称,如下表所示:

image1

问:哪些 ECS 资源 ID 将发生变化?

ID 更改将会对 2 种资源产生影响:ECS 任务和 ECS 容器实例。

问:新 ID 将采用什么格式?

新 ID 的长度会短一些(32 个字符),并且不包含任何连字符。请参阅下表,查看旧 ID 和新 ID 的示例。

image2

问:我现在已经选择采用新格式,如何将我的资源转换为新格式以便标记它们?

为了确保连续性,所有现有 ECS 资源将在整个生命周期中保留其 ARN 和 ID。这意味着,只有新创建的资源才具有新格式。要转换在服务中运行的现有任务的格式,您可以触发新的服务部署。要转换 ECS 服务的格式,您可以删除并重新创建 ECS 服务。最后,要转换 ECS 容器实例的格式,您需要将容器实例用尽并注册新的容器实例。

问:采用新格式的截止日期是什么时候?

一直到 2019 年 12 月底,您均可以通过 API 或 EC2 控制台选择采用新的 ARN/ID。所有账户均可以根据测试需要选择和取消选择采用新的 ARN/ID。从 2020 年 1 月 1 日起,我们就不再提供切换格式的选项,新创建的 ECS 资源都将采用新的 ARN/ID 格式。

问:新账户是否会自动选择采用新格式?

在 2019 年 3 月 31 日之前,所有新创建的 AWS 账户将继续默认采用当前格式。从 2019 年 4 月 1 日开始,所有新创建的账户将自动选择采用新格式,但在 2019 年 12 月 31 日前,您可以选择取消采用新格式。

问:如何选择和取消选择采用新的 ARN/ID?

在过渡期(从现在一直到 2019 年 12 月底)内,您可以通过 API 或 EC2 控制台选择采用新格式。有关说明,请参阅此文档。

问:是否可以仅选择账户中的特定 IAM 用户或 IAM 角色?

可以。您可以选择特定 IAM 角色或 IAM 用户。由某个 IAM 角色或 IAM 用户创建的资源的 ARN/ID 格式将取决于创建资源的用户或角色在创建时的选择状态。此外,选择或取消选择根用户会将更改应用于整个 AWS 账户,除非相关 IAM 用户或角色明确覆盖了自己的选择状态。

问:如果我对此不采取任何行动,会怎么样?

如果您在过渡期内未选择采用新格式,则您将在 2020 年 1 月 1 日后自动开始采用新格式。我们不推荐此方法。建议您在过渡期内提前测试新格式,以识别和解决任何潜在问题。

问:如果我想让在 2019 年 12 月 31 日后创建的资源继续采用旧的 ARN/ID,该怎么办?

遗憾的是,从 2020 年 1 月 1 日开始,所有新创建的资源都将采用新的 ARN 和 ID 格式。这将使您能够受益于当前和即将推出的 ECS 功能,例如标记和成本分配。

问:如果我在过渡期内选择采用新的 ARN/ID 格式,然后又取消选择,用新格式创建的资源会怎么样?

在系统为某个资源分配 ARN/ID 后,该 ARN/ID 将不会更改。无论您日后采取任何操作,使用新的 ARN/ID 创建的资源都将保留新的 ARN/ID。移除新的 ARN/ID 的唯一方法是删除或停用相应的资源。为此,务必小心谨慎,尽量避免在对工具和自动化功能进行测试之前使用新格式创建重要资源。

问:如果我的系统在过渡期结束前没有达到预期性能,我该怎么办?

如果您的系统在过渡期内没有达到预期性能,您可以暂时选择取消采用新格式并修复系统。从 2020 年 1 月 1 日开始,无论您的账户设置如何,所有新资源均将采用新的 ARN 和 ID 格式,因此务必在转换期结束前使用新格式的 ARN 和 ID 测试您的系统。通过尽早测试和选用,您可以赢得宝贵的时间以便修改您的工具和工作流程,从而最大限度降低对系统的影响。

问:在过渡期间,如果我在多个区域启动资源,会怎么样?

您可以灵活地按区域选择采用新格式。这意味着,您在多个区域的选择状态可以不同。如果 Amazon ECS 在过渡期间启动了新区域,这些区域的运作方式将与现有区域一样。也就是说,一直到 2019 年 12 月 31 日,您都可以选择要使用新的 ARN 格式还是旧的 ARN 格式。

开始使用 Amazon ECS

打开 Amazon ECS 控制台
准备好开始使用了吗?
注册
还有更多问题?
联系我们