Amazon EC2 Container Service (ECS) 可使您在 Amazon EC2 实例集群中轻松运行和管理支持 Docker 的应用程序。本地打包为容器的应用程序将以同样的方式部署并运行在 Amazon ECS 管理的容器中。使用 Amazon ECS 后,您不再需要安装、操作、扩展您自己的集群管理基础设施,让您可以根据自己的资源需求和可用性要求在集群中安排支持 Docker 的应用程序。借助 Amazon ECS,您可以从一个容器扩展到覆盖数百个实例的数千个容器,而运行应用程序的方式并不会因此而变得复杂。您可以运行包括应用程序、批量作业和微服务在内的任何东西。Amazon ECS 将基础设施的一切复杂因素全部消除,让您能够集中精力设计、开发、运行容器化应用程序。
利用 Amazon ECS,您可以通过创建和终止 Docker 容器到查看详细的集群状态信息来获得集群的完全可见性和控制。您可以集成并使用您自己的容器计划程序或将 EC2 Container Service 接入您现有的软件交付过程(例如持续集成和交付系统)。
Amazon EC2 Container Service 支持 Docker 并使您能够在 Amazon EC2 实例的集群间运行和管理 Docker 容器。Amazon ECS 所管理的集群中的每个 EC2 实例都运行有 Docker 守护程序,所以无论您将何应用程序打包为本地容器,它都将部署和运行在 Amazon ECS 上,无需进行任何配置更改。
管理自己的容器管理基础设施通常涉及安装、操作、扩展自己的集群管理软件、配置管理系统和监控解决方案。这些系统的可用性和可扩展性架构和管理很难。Amazon EC2 Container Service 消除了容器管理工作的复杂性。使用 Amazon ECS,您只需要启动容器实例集群并指定想要运行的任务即可,所有集群管理工作将由 Amazon ECS 完成。
Amazon EC2 Container Service 可使您通过声明式 JSON 模板定义任务,这一过程叫做任务定义。在任务定义中,您可以指定您的任务需要的一个或多个容器,包括 Docker 存储库和映像、内存和 CPU 要求、共享数据卷以及容器互相链接的方式。您可以从您在该服务中注册的单个任务定义文件中启动任意数量的任务。任务定义文件还可以让您对应用程序规格进行版本控制。
Amazon EC2 Container Service 为您提供一组简单的 API,方便您集成和扩展服务。使用 API,您可以创建和删除集群、注册和取消注册任务、启动和终止 Docker 容器,并能提供集群及其实例的状态相关详细信息。您还可以使用 AWS CloudFormation 预置 Amazon ECS 集群、注册任务定义和安排容器。
Amazon EC2 Container Service 包含许多计划程序,可以根据您的资源需求(例如 CPU 或 RAM)和可用性要求在集群中放置容器。通过使用可用的计划程序,您可以安排长期运行的应用程序和服务以及批量作业。Amazon ECS API 还能提供完整的集群状态信息,允许您编写自己的计划程序或集成现有的第三方计划程序(例如 Marathon)。Amazon ECS 是共享状态的乐观并发系统,可以将集群的完整状态呈现给所有的计划程序。通过使用 Amazon ECS API 或 Blox (一个用于容器管理和编排的开源对象集合),您可以开发自己的计划程序或集成第三方计划程序。请参阅 Blox GitHub 页面了解更多信息。
容器自动恢复
Amazon ECS 服务计划程序可以自动恢复运行状况不佳的容器,保证容器数量满足您的需求,以便为应用程序提供支持。
容器部署
Amazon ECS 让您可以轻松将容器更新到新的版本。您可以上传新版本的应用程序任务定义,Amazon ECS 计划程序将自动使用更新后的映像启动新的容器并停止运行着旧版本的容器。Amazon ECS 将自动从关联的 ELB 注册和注销容器。
Amazon ECS 已与 Elastic Load Balancing (ELB) 集成,支持您在多个容器之间分配流量。您只需指定任务定义和要使用的 ELB,Amazon ECS 服务计划程序将自动添加和删除 ELB 中的容器。您可以在任务定义中指定动态端口,这可为安排在 EC2 实例上的容器提供未使用的端口。您还可以使用基于路径的路由与多个服务共享 ELB。
Amazon EC2 Container Service CLI (Amazon ECS CLI) 让您能够简化本地开发体验,并轻松设置 Amazon ECS 集群及其相关资源(如 EC2 实例)。Amazon ECS CLI 支持 Docker Compose,后者是一款可用于定义和运行多容器应用程序的开源工具。您可以在开发计算机上以及生产过程中应用用于定义多容器应用程序的同一个 Compose 定义。Amazon ECS CLI 开源,可在此处下载。
Amazon ECS 为您的容器和集群提供了监控功能。您可以监控正在运行的任务的 CPU 和内存使用率的平均值及总和,这些任务通过 Amazon CloudWatch 按任务定义、服务或集群进行分组。您还可以设置 CloudWatch 警报,在您的容器或集群需要扩大或缩小规模时提醒您。
您可以将各个容器实例的 ECS 代理日志和 Docker 容器日志发送到 Amazon CloudWatch 日志,以简化问题诊断。借助 AWS CloudTrail,您还可以记录所有的 Amazon ECS API 调用并将日志文件发送给您。记录的信息包括 API 调用者的身份、API 调用的时间、API 调用者的源 IP 地址、请求参数以及 Amazon ECS 返回的响应元素。CloudTrail 提供了从 Amazon ECS 管理控制台、AWS 软件开发工具包和 AWS CLI 发出的 API 调用的历史记录,可以帮助进行安全分析、资源变更跟踪和合规性审核。
Amazon EC2 Container Service 可用于任何第三方或可访问的私有 Docker 注册表或 Docker Hub(一个托管的 Docker 映像存储库)。您需要做的只是在您的任务定义中指定存储库,然后 Amazon ECS 将为应用程序取得适当的映像。
Amazon EC2 Container Service 支持您为每项 ECS 任务指定一个 IAM 角色。如此一来,ECS 容器实例将获得遵循“最低权限”访问策略的最小角色,允许您分别管理实例角色和任务角色。您还可以查看哪项任务使用哪个角色,这些信息均记录在 CloudTrail 日志中。