使用 Amazon EFS 创建 Amazon ECS 任务定义并在 EC2 实例上挂载文件系统 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon EFS 创建 Amazon ECS 任务定义并在 EC2 实例上挂载文件系统

由 Durga Prasad Cheepuri (AWS)创建

环境:PoC 或试点

技术:容器和微服务; CloudNative;管理和治理;存储和备份;Web 和移动应用程序

Amazon Web Services:Amazon ECS;Amazon EFS

Summary

此模式提供了代码示例和步骤,用于创建在 Amazon Web Services (AWS)云中的 Amazon Elastic Compute Cloud (Amazon EC2)实例上运行的 Amazon Elastic Container Service (Amazon ECS)任务定义,同时使用 Amazon Elastic File System (Amazon EFS)在这些 EC2 实例上挂载文件系统。使用 Amazon EFS 的 Amazon ECS 任务会自动挂载您在任务定义中指定的文件系统,并使这些文件系统可供 AWS 区域中所有可用区中的任务容器使用。

为了满足您的持久性存储和共享存储要求,您可以结合使用 Amazon ECS 和 Amazon EFS。例如,您可以使用 Amazon EFS 存储持久性用户数据和应用程序数据,并在不同的可用区中运行活动和备用 ECS 容器对以实现高可用性。您还可以使用 Amazon EFS 存储可由 ECS 容器和分布式作业工作负载并行访问的共享数据。

要将 Amazon EFS 与 Amazon ECS 结合使用,您可以将一个或多个卷定义添加到任务定义中。卷定义包括 Amazon EFS 文件系统 ID、接入点 ID 以及 AWS Identity and Access Management(AWS IAM)授权或传输层安全性协议(TLS)传输中加密的配置。您可以在任务定义中使用容器定义来指定容器运行时挂载的任务定义卷。当使用 Amazon EFS 文件系统的任务运行时,Amazon ECS 会确保文件系统已挂载并可供需要访问该文件系统的容器使用。

先决条件和限制

先决条件

限制

  • 1.35.0 之前的 Amazon ECS 容器代理版本不支持使用 EC2 启动类型的任务的 Amazon EFS 文件系统。

架构

下图显示了一个使用 Amazon ECS 创建任务定义并在 ECS 容器中的 EC2 实例上挂载 Amazon EFS 文件系统的应用程序示例。

AWS Cloud architecture showing ECS task definition, ECS service, and EFS file system interaction.

图表显示了以下工作流:

  1. 创建 Amazon EFS 文件系统。

  2. 创建带有容器的任务定义。

  3. 配置容器实例以挂载 Amazon EFS 文件系统。任务定义引用卷挂载,因此容器实例可使用 Amazon EFS 文件系统。ECS 任务可以访问相同的 Amazon EFS 文件系统,无论这些任务是在哪个容器实例上创建的。

  4. 创建具有三个任务定义实例的 Amazon ECS 服务。

技术堆栈

  • Amazon EC2

  • Amazon ECS

  • Amazon EFS

工具

  • Amazon EC2 – Amazon Elastic Compute Cloud (Amazon EC2) 在 Amazon Web Services Cloud 中提供可扩展的计算容量。您可根据需要使用 Amazon EC2 启动任意数量的虚拟服务器,您可以横向扩展或横向缩减。

  • Amazon ECS - Amazon Elastic Container Service (Amazon ECS) 是一项可扩展性高的快速容器管理服务,可用于运行、停止和管理集群上的容器。您可以在由 AWS Fargate 托管的无服务器基础设施上运行任务和服务。为了更好地控制您的基础设施,您还可以在托管的 Amazon EC2 实例集群上运行任务和服务。

  • Amazon EFS - Amazon Elastic File System (Amazon EFS) 可提供简单、可扩展、完全托管的弹性 NFS 文件系统,以便与 Amazon Web Services Cloud 服务和本地资源配合使用。

  • AWS CLI - AWS 命令行界面(AWS CLI)是一种开源工具,它使您能够使用命令行 Shell 中的命令与 Amazon Web Services 交互。仅需最少的配置,即可使用 AWS CLI 开始运行命令,以便从终端程序中的命令提示符实现与基于浏览器的 AWS 管理控制台所提供的功能等同的功能。

操作说明

任务描述所需技能
使用 AWS 管理控制台 创建 Amazon EFS 文件系统。
  1. 创建 Amazon EFS 文件系统,然后选择包含容器的 VPC。注意:如果您使用其他 VPC,请设置 VPC 对等连接

  2. 请记下文件系统 ID 值。

AWS DevOps
任务描述所需技能
使用 Amazon EFS 文件系统创建任务定义。

使用具有以下配置的新 Amazon ECS 控制台经典 Amazon ECS 控制台创建任务定义:

  • 如果您使用新控制台,请为应用程序环境选择 Amazon EC2 实例。如果您使用经典控制台,请选择 EC2 作为启动类型。

  • 添加卷。输入卷的名称,选择 EFS 作为卷类型,然后选择您之前记下的文件系统 ID。对于根目录,选择要在 Amazon ECS 容器主机上托管的 Amazon EFS 文件系统路径。

AWS DevOps
使用 AWS CLI 创建任务定义。
  1. 若要为任务定义创建带有输入参数占位符的 JSON 模板,请运行以下命令:

    aws ecs register-task-definition --generate-cli-skeleton
  2. 若要使用 JSON 模板创建任务定义,请运行以下命令:

    aws ecs register-task-definition --cli-input-json file://<path_to_your_json_file>
  3. 根据 task_definition_parameters.json 文件(附件)在您的 JSON 模板中输入输入参数。注意:有关输入参数的更多信息,请参阅任务定义参数(Amazon ECS 文档)和 register-task-definition(AWS CLI 命令参考)。

AWS DevOps

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip