

# 将 Amazon EFS 卷与 Amazon ECS 结合使用
<a name="efs-volumes"></a>

Amazon Elastic File System（Amazon EFS）提供简单的可扩展文件存储以供您的 Amazon ECS 任务使用。使用 Amazon EFS 时，存储容量是弹性的。它会随着您添加和删除文件而自动增加和缩减。您的应用程序可在需要时获得所需存储。

您可以将 Amazon EFS 文件系统与 Amazon ECS 配合使用，以便导出跨容器实例的实例集的文件系统数据。这样，无论您的任务登录的是哪个实例，都可以访问相同的持久性存储。您的任务定义必须引用容器实例上的卷挂载才能使用该文件系统。

有关教程，请参阅 [使用控制台为 Amazon ECS 配置 Amazon EFS 文件系统](tutorial-efs-volumes.md)。

## 注意事项
<a name="efs-volume-considerations"></a>

 使用 Amazon EFS 卷时应考虑以下事项：
+ 对于在 EC2 上运行的任务，已将 Amazon EFS 文件系统支持作为一个公共预览版添加，其中包括经 Amazon ECS 优化的 AMI 版本 `20191212` 以及容器代理版本 1.35.0。但是，Amazon EFS 文件系统支持通过经 Amazon ECS 优化的 AMI 版本 `20200319` 和容器代理版本1.38.0 正式推出，该版本包含 Amazon EFS 接入点和 IAM 授权功能。我们建议您使用经 Amazon ECS 优化的 AMI 版本 `20200319` 或更高版本以利用这些功能。有关更多信息，请参阅 [经 Amazon ECS 优化的 Linux AMI](ecs-optimized_AMI.md)。
**注意**  
如果您创建自己的 AMI，则必须使用容器代理 1.38.0 或更高版本、`ecs-init` 1.38.0-1 或更高版本，并在 Amazon EC2 实例上运行以下命令以启用 Amazon ECS 卷插件。命令取决于您将 Amazon Linux 2 还是 Amazon Linux 用作基本映像。  
Amazon Linux 2  

  ```
  yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```
Amazon Linux  

  ```
  yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ 对于 Fargate 托管的任务，平台版本 1.4.0 或更高版本（Linux）支持 Amazon EFS 文件系统。有关更多信息，请参阅 [适用于 Amazon ECS 的 Fargate 平台版本](platform-fargate.md)。
+ 在 Fargate 上托管的任务中使用 Amazon EFS 卷时，Fargate 将创建负责管理 Amazon EFS 卷的主管容器。主管容器使用少量的任务内存和 CPU。主管容器在查询任务元数据版本 4 端点时可见。此外，它作为容器名称 `aws-fargate-supervisor` 在 CloudWatch Container Insights 中可见。有关使用 EC2 的更多信息，请参阅[Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4.md)。有关使用 Fargate 的更多信息，请参阅[Fargate 上任务的 Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4-fargate.md)。
+ 不支持在外部实例上使用 Amazon EFS 卷或指定 `EFSVolumeConfiguration`。
+ 在 Amazon ECS 托管实例上运行的任务支持使用 Amazon EFS 卷。
+ 建议您将代理配置文件中的 `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` 参数值设置为小于默认值（约 1 小时）。此更改有助于防止 EFS 挂载凭证过期，并允许清理未使用的挂载。有关更多信息，请参阅 [Amazon ECS 容器代理配置](ecs-agent-config.md)。

## 使用 Amazon EFS 接入点
<a name="efs-volume-accesspoints"></a>

Amazon EFS 接入点是 EFS 文件系统中特定于应用程序的入口点，用于管理应用程序对共享数据集的访问。有关 Amazon EFS 接入点以及如何控制访问的更多信息，请参阅《Amazon Elastic File System 用户指南》**中的[使用 Amazon EFS 接入点工作](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html)。

接入点可以为通过接入点发出的所有文件系统请求强制执行用户身份（包括用户的 POSIX 组）。接入点还可以为文件系统强制执行不同的根目录。这样，客户端只能访问指定目录或其子目录中的数据。

**注意**  
创建 EFS 接入点时，请在文件系统上指定用作根目录的路径。在 Amazon ECS 任务定义中引用具有接入点 ID 的 EFS 文件系统时，必须忽略根目录或将根目录设置为 `/`，以便在 EFS 接入点上强制执行设置的路径。

您可以使用 Amazon ECS 任务 IAM 角色强制特定应用程序使用特定的接入点。通过将 IAM 策略与接入点相结合，您可以为您的应用程序提供对特定数据集的安全访问。有关如何使用任务 IAM 角色的更多信息，请参阅[Amazon ECS 任务 IAM 角色](task-iam-roles.md)。