Amazon EFS 卷 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon EFS 卷

Amazon Elastic File System (Amazon EFS) 提供简单的可扩展文件存储以供您的Amazon Batch个作业。使用 Amazon EFS 时,存储容量是弹性的。它可在您添加和删除文件时自动缩放。您的应用程序可在需要时获得所需存储。

您可以将 Amazon EFS 文件系统与Amazon Batch以便导出跨容器实例队列的文件系统数据。这样,您的作业可以访问相同的持久性存储。但是,您必须将容器实例 AMI 配置为在 Docker 守护程序启动前挂载 Amazon EFS 文件系统。此外,您的作业定义必须引用容器实例上的卷挂载才能使用该文件系统。下面几个部分可帮助您了解如何将 Amazon EFS 用于Amazon Batch.

Amazon EFS 卷注意事项

使用 Amazon EFS 卷时应注意以下事项:

  • 对于使用 EC2 资源的作业,已将 Amazon EFS 文件系统支持作为一个公共预览版添加,其中包括经 Amazon ECS 优化20191212使用容器代理版本 1.35.0。但是,Amazon EFS 文件系统支持通过 Amazon ECS 优化的 AMI 版本进入了正式发布20200319使用容器代理版本 1.38.0,其中包含 Amazon EFS 访问点和 IAM 授权功能。我们建议您使用 Amazon ECS 优化的 AMI 版本。20200319或稍后利用这些功能。有关更多信息,请参阅 。经 Amazon ECS 优化的 AMI 版本中的Amazon Elastic Container Service 开发指南.

    注意

    如果您创建自己的 AMI,则必须使用容器代理 1.38.0 版或更高版本。ecs-init版本 1.38.0-1 或更高版本,并在 Amazon EC2 实例上运行以下命令。这一切都是为了启用 Amazon ECS 卷插件。命令取决于您将 Amazon Linux 2 还是 Amazon Linux 2 用作基本映像。

    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 或更高版本时添加 Amazon EFS 文件系统支持。有关更多信息,请参阅 。AmazonFargate 平台版本中的Amazon Elastic Container Service 开发指南.

  • 在使用 Fargate 资源的作业中指定 Amazon EFS 卷时,Fargate 将创建负责管理 Amazon EFS 卷的主管容器。主管容器使用少量的作业内存。主管容器在查询任务元数据版本 4 终端节点时可见。有关更多信息,请参阅 Amazon Fargate Amazon Elastic Container Service 用户指南中的任务元数据端点版本 4

使用 Amazon EFS 访问点

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

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

注意

创建 EFS 访问点时,您可以在文件系统上指定用作根目录的路径。当您使用中的接入点 ID 引用 EFS 文件系统时Amazon Batch作业定义时,必须省略根目录或将其设置为/这将强制在 EFS 接入点上设置的路径。

您可以使用Amazon Batch以强制特定应用程序使用特定的访问点。通过将 IAM 策略与访问点相结合,您可以轻松地为您的应用程序提供对特定数据集的安全访问。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的任务的 IAM 角色

在任务定义中指定 Amazon EFS 文件系统

要将 Amazon EFS 文件系统卷用于容器,必须在任务定义中指定卷和挂载点配置。下面的任务定义 JSON 代码段显示volumesmountPoints容器的对象:

{ "containerProperties": [ { "name": "container-using-efs", "image": "amazonlinux:2" ], "command": [ "ls", "-la", "/mount/efs" ], "mountPoints": [ { "sourceVolume": "myEfsVolume", "containerPath": "/mount/efs", "readOnly": true } ], "volumes": [ { "name": "myEfsVolume", "efsVolumeConfiguration": { "fileSystemId": "fs-12345678", "rootDirectory": "/path/to/my/data", "transitEncryption": "ENABLED", "transitEncryptionPort": integer, "authorizationConfig": { "accessPointId": "fsap-1234567890abcdef1", "iam": "ENABLED" } } } ] } ] }
efsVolumeConfiguration

类型: 对象

必需 否

使用 Amazon EFS 卷时将指定此参数。

fileSystemId

类型: 字符串

必需 是

要使用的 Amazon EFS 文件系统 ID。

rootDirectory

类型: 字符串

必需 否

Amazon EFS 文件系统中要作为主机内的根目录挂载的目录。如果忽略此参数,将使用 Amazon EFS 卷的根目录。指定 / 与忽略此参数效果相同。其长度最多为 4,096 个字符。

重要

EFS 果在authorizationConfig,必须省略根目录参数或将其设置为/. 这将强制在 EFS 接入点上设置的路径。

transitEncryption

类型: 字符串

有效值:ENABLED | DISABLED

必需 否

确定是否对传输的 Amazon EFS 数据启用加密。Amazon Batch主机和 Amazon EFS 服务器。如果使用 Amazon EFS IAM 授权,则必须启用传输加密。如果忽略此参数,将使用默认值 DISABLED。有关更多信息,请参阅 。对传输中的数据加密中的Amazon Elastic File System 用户指南.

transitEncryptionPort

类型: 整数

必需 否

发送加密数据时要使用的端口Amazon Batch主机和 Amazon EFS 服务器。如果未指定传输加密端口,将使用 Amazon EFS 挂载帮助程序使用的端口选择策略。该值必须在 0 到 65535 之间。有关更多信息,请参阅 。EFS 挂载帮助程序中的Amazon Elastic File System 用户指南.

authorizationConfig

类型: 对象

必需 否

Amazon EFS 文件系统的授权配置详细信息。

accessPointId

类型: 字符串

必需 否

要使用的访问点 ID。如果指定了访问点,则中的根目录值efsVolumeConfiguration必须省略或将其设置为/. 这将强制在 EFS 接入点上设置的路径。如果使用访问点,则必须在 EFSVolumeConfiguration 中启用传输加密。有关更多信息,请参阅 。使用 Amazon EFS 访问点中的Amazon Elastic File System 用户指南.

iam

类型: 字符串

有效值:ENABLED | DISABLED

必需 否

确定是否使用Amazon Batch挂载 Amazon EFS 文件系统时在作业定义中定义的作业 IAM 角色。如果启用,则必须在 EFSVolumeConfiguration 中启用传输加密。如果忽略此参数,将使用默认值 DISABLED。有关执行 IAM 角色的更多信息,请参阅Amazon Batch执行 IAM 角色.