Amazon EFS 卷 - Amazon Elastic Container Service

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

Amazon EFS 卷

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

您可以将 Amazon EFS 文件系统与 Amazon ECS 配合使用,以便导出跨容器实例队列的文件系统数据。这样,无论您的任务登录的是哪个实例,都可以访问相同的持久性存储。您的任务定义必须引用容器实例上的卷挂载才能使用该文件系统。下面几个部分描述了如何开始将 Amazon EFS 与 Amazon ECS 配合使用。

有关教程,请参阅 使用控制台在 Amazon ECS 上使用 Amazon EFS 文件系统

Amazon EFS 卷注意事项

使用 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 优化的 AMI

    注意

    如果您创建自己的 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 文件系统。有关更多信息,请参见 AWSFargate Linux 平台版本

  • 在 Fargate 上托管的任务中使用 Amazon EFS 卷时,Fargate 将创建负责管理 Amazon EFS 卷的主管容器。主管容器使用少量的任务内存。主管容器在查询任务元数据版本 4 端点时可见。此外,它作为容器名称在《 CloudWatch 容器见解》中可见aws-fargate-supervisor有关更多信息,请参阅任务元数据终端节点版本 4

  • 不支持在外部实例上使用 Amazon EFS 卷或指定 EFSVolumeConfiguration

  • 建议您将代理配置文件中的 ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 参数值设置为小于默认值(约 1 小时)。此更改有助于防止 EFS 挂载凭证过期,并允许清理未使用的挂载。有关更多信息,请参阅 Amazon ECS 容器代理配置

使用 Amazon EFS 接入点

Amazon EFS 访问点是 EFS 文件系统中特定于应用程序的入口点,用于管理应用程序对共享数据集的访问。有关 Amazon EFS 访问点以及如何控制访问的更多信息,请参阅《Amazon Elastic File System 用户指南》中的使用 Amazon EFS 访问点

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

注意

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

您可以使用 Amazon ECS 任务 IAM 角色强制特定应用程序使用特定的访问点。通过将 IAM policy 与访问点相结合,您可以为您的应用程序提供对特定数据集的安全访问。有关如何使用任务 IAM 角色的更多信息,请参阅任务 IAM 角色