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

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

Amazon EFS 卷

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

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

Amazon EFS 卷注意事项

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

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

    注意

    如果您创建自己的 AMI,则必须使用容器代理 1.38.0 或更高版本ecs-init(版本 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

    Amazon Linux 2

  • 对于使用 Fargate 资源的作业,在使用平台版本 1.4.0 或更高版本时增加了Amazon EFS文件系统支持。有关更多信息,请参阅 AWS Fargate 中的Amazon Elastic Container Service Developer Guide平台版本

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

使用 Amazon EFS 访问点

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

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

注意

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

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

在作业定义中指定 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主机和AWS Batch服务器之间传输Amazon EFS的数据启用加密。如果使用 Amazon EFS IAM 授权,则必须启用传输加密。如果忽略此参数,将使用 DISABLED 的默认值。有关更多信息,请参阅 中的https://docs.amazonaws.cn/efs/latest/ug/encryption-in-transit.html加密传输中的数据Amazon Elastic File System 用户指南

transitEncryptionPort

类型:整数

必需:否

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

authorizationConfig

类型:对象

必需:否

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

accessPointId

类型:字符串

必需:否

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

iam

类型:字符串

有效值: ENABLED | DISABLED

必需:否

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