选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

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

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

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

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

由 Durga Prasad Cheepuri (AWS) 创建

摘要

此模式提供了创建亚马逊弹性容器服务 (Amazon ECS) 任务定义的代码示例和步骤,该任务定义在亚马逊网络服务 (AWS) 云的 EC2亚马逊弹性计算云 (Amazon) 实例上运行,同时使用亚马逊弹性文件系统 (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 容器代理版本不支持 Amazon EFS 文件系统执行使用 EC2 启动类型的任务。

架构

下图显示了一个使用 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

工具

  • 亚马逊 EC2 — 亚马逊弹性计算云 (Amazon EC2) 在 AWS 云中提供可扩展的计算容量。您可以根据需要使用 Amazon EC2 启动任意数量或数量的虚拟服务器,也可以进行横向扩展或扩展。

  • Amazon ECS - Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,可助您轻松运行、停止和管理集群上的容器。您可以在由 AWS Fargate 托管的无服务器基础设施上运行任务和服务。或者,为了更好地控制您的基础架构,您可以在自己管理的 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 管理控制台所提供的功能等同的功能。

操作说明

Task描述所需技能
使用 AWS 管理控制台 创建 Amazon EFS 文件系统。
  1. 注意

    创建 Amazon EFS 文件系统,然后选择包含容器的 VPC。:如果您使用其他 VPC,请设置 VPC 对等连接

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

AWS DevOps

创建 Amazon EFS 文件系统

Task描述所需技能
使用 AWS 管理控制台 创建 Amazon EFS 文件系统。
  1. 注意

    创建 Amazon EFS 文件系统,然后选择包含容器的 VPC。:如果您使用其他 VPC,请设置 VPC 对等连接

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

AWS DevOps
Task描述所需技能
使用 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

使用 Amazon EFS 文件系统或 AWS CLI 创建 Amazon ECS 任务定义

Task描述所需技能
使用 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

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。