亚马逊AWS官方博客

对于数据密集型工作负载,Amazon ECS 支持与 Amazon EBS 卷原生集成



今天,我们宣布 Amazon Elastic Container Service(Amazon ECS)支持与 Amazon Elastic Block Store(Amazon EBS)的集成,可以更轻松地运行更广泛的数据处理工作负载。您可以为在 AWS FargateAmazon Elastic Compute Cloud(Amazon EC2)上运行的 ECS 任务预置 Amazon EBS 存储,而无需管理存储或计算。

许多组织选择将应用程序作为容器化包进行部署,随着 Amazon ECS 与 Amazon EBS 集成的引入,组织现在可以运行比以往更多的工作负载类型。

您可以运行需要支持高事务量和吞吐量的存储的数据工作负载,例如大数据的提取、转换、加载(ETL)作业,这些作业需要获取现有数据、执行处理并存储已处理的数据以供下游使用。由于存储生命周期完全由 Amazon ECS 管理,因此您无需构建任何额外框架即可管理基础设施更新,这使您的数据处理工作负载现在更具韧性,所需的管理工作也更少。

现在,您可以为在 Amazon ECS 上运行的容器化应用程序选择多种存储选项:

  • 默认情况下,您的 Fargate 任务将获得 20GiB 的临时存储。对于需要额外存储空间来下载大型容器映像或临时工作的应用程序,您可以为 Fargate 任务配置高达 200GiB 的临时存储。
  • 对于涉及多个需要并发访问共享数据集的任务的应用程序,您可以配置 Amazon ECS 以将 Amazon Elastic File System(Amazon EFS)文件系统挂载到在 EC2 和 Fargate 上运行的 ECS 任务。此类工作负载的常见示例包括内容管理系统、内部 DevOps 工具和机器学习(ML)框架等 Web 应用程序。Amazon EFS 设计为可在区域范围内可用,并且可以同时附加至多个任务。
  • 对于需要高性能、低成本的存储且无需跨任务共享的应用程序,您可以配置 Amazon ECS 以预置 Amazon EBS 存储并将其附加至在 Amazon EC2 和 Fargate 上运行的任务。Amazon EBS 设计为在可用区内提供低延迟和高性能的块存储。

要了解更多信息,请参阅 AWS 文档中的在 Amazon ECS 任务中使用数据卷持久存储的最佳实践

开始将 EBS 卷集成到您的 ECS 任务
您可以在任务定义中配置容器的卷挂载点,并在运行时系统中传递 Amazon ECS 任务的 Amazon EBS 存储要求。对于大多数使用案例,您只需提供任务所需的卷大小即可开始。您也可以根据需要配置所有 EBS 卷属性以及要用于格式化卷的文件系统。

1.创建任务定义
转至 Amazon ECS 控制台,导航到任务定义,然后选择创建新任务定义

存储部分中,选择部署时配置以将 EBS 卷设置为新的配置类型。您可以为 Linux 文件系统的每个任务配置并附加一个卷。

当您选择创建任务定义时配置时,可以配置现有存储选项,例如绑定挂载、Docker 卷、EFS 卷、适用于 Windows File Server 的 Amazon FSx 卷或 Fargate 临时存储。

现在,您可以在任务定义中选择一个容器、源 EBS 卷,并提供将在任务中挂载该卷的挂载路径。

您还可以使用 $aws ecs register-task-definition --cli-input-json file://example.json 命令行来注册任务定义以添加 EBS 卷。以下代码段是示例,任务定义以 JSON 格式保存。

{
    "family": "nginx"
    ...
    "containerDefinitions": [
        {
            ...
            "mountPoints": [
                "containerPath": "/foo",
                "sourceVoumne": "new-ebs-volume"
            ],
            "name": "nginx",
            "image": "nginx"
        }
    ],
    "volumes": [
       {
           "name": "/foo",
           "configuredAtRuntime": true
       }
    ]
}

2.使用 EBS 卷部署和运行任务
现在,您可以通过在 ECS 集群中选择任务来运行任务。转到您的 ECS 集群,然后选择运行新任务。请注意,您可以选择计算选项、启动类型和任务定义。

注意:虽然此示例通过附加的 EBS 卷部署独立任务,但您也可以配置新的或现有的 ECS 服务以使用具有所需配置的 EBS 卷。

您有一个新的部分,您可以在其中配置附加存储。卷名称、类型和挂载点是您在任务定义中定义的。选择您的 EBS 卷类型、大小(GiB)、IOP 和所需的吞吐量。

您无法将现有 EBS 卷附加到 ECS 任务。但如果您想从现有快照创建卷,则可以选择快照 ID。如果您想创建新卷,则可以将此字段留空。您可以选择文件系统类型,Linux 上为 ext3 或 ext4 文件系统。

默认情况下,当任务终止时,Amazon ECS 会删除附加的卷。如果您需要在任务退出后保留 EBS 卷中的数据,请勾选终止时删除。此外,您还需要为卷管理创建一个 AWS Identity and Access Management(IAM)角色,其中包含允许 Amazon ECS 代表您进行 API 调用的相关权限。有关此策略的更多信息,请参阅 AWS 文档中的基础设施角色

您还可以使用 Amazon 托管密钥和客户自主管理型密钥在 EBS 卷上配置加密。要了解有关这些选项的更多信息,请参阅 AWS 文档中的 Amazon EBS 加密

配置所有任务设置后,选择创建以启动任务。

3.使用 EBS 卷部署和运行任务
任务启动后,您可以在任务定义详细信息页面上看到卷信息。选择一项任务,然后选择选项卡可查找您创建的 EBS 卷的详细信息。

您的团队可以更有效地组织 EBS 卷的开发和操作。例如,应用程序开发人员可以在任务定义中配置应用程序期望存储可用的位置的路径,DevOps 工程师可以在部署应用程序时,在运行时系统中配置实际的 EBS 卷属性。

这使 DevOps 工程师能够将相同的任务定义部署到具有不同 EBS 卷配置的不同环境,例如,开发环境中的 gp3 卷和生产环境中的 io2 卷。

现已推出
Amazon ECS 与 Amazon EBS 的集成现已在 9 个 AWS 区域推出:美国东部(俄亥俄州)、美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)、欧洲地区(法兰克福)、欧洲地区(爱尔兰)和欧洲地区(斯德哥尔摩)。您只需为使用量(包括 EBS 卷和快照)付费。要了解更多信息,请参阅 AWS 文档中的 Amazon EBS 定价页面ECS 中的 Amazon EBS 卷

不妨尝试一下,并将反馈发送到我们的公开路线图AWS re:Post for Amazon ECS 或通过常用的 AWS Support 联系人发送。

Channy

附言:特别感谢 AWS 高级企业开发人员宣传官 Maish Saidel-Keesing 为撰写这篇博客文章所做的贡献。