

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

# 使用 Amazon EFS 创建 Amazon ECS 任务定义并在 EC2 实例上挂载文件系统
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs"></a>

*Durga Prasad Cheepuri，Amazon Web Services*

## Summary
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-summary"></a>

此模式提供了创建亚马逊弹性容器服务 (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 会确保文件系统已挂载并可供需要访问该文件系统的容器使用。

## 先决条件和限制
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account。
+ 具有虚拟专用网络(VPN) 端点或路由器的虚拟私有云(VPC)
+ （推荐）[Amazon ECS 容器代理 1.38.0 或更高版本](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-versions.html)，以与 Amazon EFS 接入点和 IAM 授权功能兼容（有关更多信息，请参阅 AWS Blog 文章 [Amazon EFS 的新增功能 - IAM 授权和接入点](https://aws.amazon.com/blogs/aws/new-for-amazon-efs-iam-authorization-and-access-points/)）。

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

## 架构
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-architecture"></a>

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

![](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/090a3f03-a4c6-47e3-b1ae-b0eb5c5b269c/images/343e0f1d-44ee-4ec2-8392-aeddc0e48b83.png)


下图显示了如下工作流：

1. 创建 Amazon EFS 文件系统。

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

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

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

**技术堆栈**
+ Amazon EC2
+ Amazon ECS
+ Amazon EFS

## 工具
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-tools"></a>
+ [亚马逊 EC2](https://docs.aws.amazon.com/ec2/?id=docs_gateway) — 亚马逊弹性计算云 (Amazon EC2) 在 AWS 云中提供可扩展的计算容量。您可以根据需要使用 Amazon EC2 启动任意数量或数量的虚拟服务器，也可以进行横向扩展或扩展。
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) - Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务，可助您轻松运行、停止和管理集群上的容器。您可以在由 AWS Fargate 托管的无服务器基础设施上运行任务和服务。或者，为了更好地控制您的基础架构，您可以在自己管理的 EC2 实例集群上运行任务和服务。
+ [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) - Amazon Elastic File System (Amazon EFS) 可提供简单、可扩展、完全托管的弹性 NFS 文件系统，以便与 Amazon Web Services Cloud 服务和本地资源配合使用。
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) - AWS 命令行界面（AWS CLI）是一种开源工具，它使您能够使用命令行 Shell 中的命令与 Amazon Web Services 交互。仅需最少的配置，即可使用 AWS CLI 开始运行命令，以便从终端程序中的命令提示符实现与基于浏览器的 AWS 管理控制台所提供的功能等同的功能。

## 操作说明
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-epics"></a>

### 创建 Amazon EFS 文件系统
<a name="create-an-amazon-efs-file-system"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 使用 AWS 管理控制台 创建 Amazon EFS 文件系统。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.html) | AWS DevOps | 

### 使用 Amazon EFS 文件系统或 AWS CLI 创建 Amazon ECS 任务定义
<a name="create-an-amazon-ecs-task-definition-by-using-either-an-amazon-efs-file-system-or-the-aws-cli"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 使用 Amazon EFS 文件系统创建任务定义。 | 使用具有以下配置的[新 Amazon ECS 控制台](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html)或[经典 Amazon ECS 控制台](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition-classic.html)创建任务定义：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.html) | AWS DevOps | 
| 使用 AWS CLI 创建任务定义。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.html) | AWS DevOps | 

## 相关资源
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-resources"></a>
+ [Amazon ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
+ [Amazon EFS 卷](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html)

## 附件
<a name="attachments-090a3f03-a4c6-47e3-b1ae-b0eb5c5b269c"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/090a3f03-a4c6-47e3-b1ae-b0eb5c5b269c/attachments/attachment.zip)