View a markdown version of this page

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

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

亚马逊 S3 文件卷

S3 Files 允许文件系统直接访问存储在亚马逊简单存储服务 (Amazon S3) 存储桶中的数据。使用 Amazon Batch,您可以在任务定义中定义 S3 文件卷,以便您的容器可以使用标准文件操作读取和写入 Amazon S3 数据。

要使用 S3 文件卷,您需要将 S3 文件系统和挂载目标配置在与 Amazon Batch 计算环境相同的 VPC 中。有关完整的设置说明,包括存储桶配置、IAM 角色、文件系统创建和挂载目标,请参阅 Amazon S3 用户指南中的 S3 文件先决条件和亚马逊弹性容器服务开发人员指南中的 Amazon ECS 配置 S3 文件

亚马逊 S3 文件量注意事项

使用 S3 文件卷时,请考虑以下事项:

  • 重要

    目前,Amazon EC2 启动类型不支持 S3 Files。如果您在任务定义中配置 S3 文件系统并尝试在 Amazon EC2 启动类型上运行该文件系统,则任务将在启动时失败。Amazon EC2 启动类型支持计划在未来版本中提供。

  • S3 文件卷始终启用传输加密。您可以选择使用transitEncryptionPort参数指定端口。默认端口为 2049

  • 该任务角色(等同于 Amazon ECS 任务角色)必须拥有s3files:ClientMount文件系统上的s3files:ClientWrite权限。要直接从 Amazon S3 读取s3:GetObject,该角色还需要存储桶上的s3:GetObjectVersion、和s3:ListBucket权限。

  • S3 文件系统挂载目标必须位于同一 VPC 中,并且可以从 Amazon Batch 计算环境的子网访问。挂载目标安全组必须允许来自计算环境安全组的入站 NFS 流量(TCP 端口 2049)。

使用 Amazon S3 文件接入点

S3 Files 接入点是文件系统中应用程序特定的入口点,它为所有文件系统请求强制执行 POSIX 用户身份和根目录。您可以使用接入点隔离租户,以便每个作业只能访问共享文件系统中自己的目录。

注意

使用accessPointArn参数指定接入点时,rootDirectory必须省略或将其设置为/。接入点强制使用自己的根目录路径。

有关创建和管理接入点的更多信息,请参阅 Amazon S3 用户指南中的为 S3 文件系统创建接入点。有关使用文件系统策略强制实施接入点隔离的更多信息,请参阅 A mazon S3 用户指南中的 S3 文件如何与 IAM 配合使用。

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

要将 S3 Files 卷用于容器,您必须在任务定义中指定卷和挂载点配置。以下作业定义 JSON 代码段显示容器的volumesmountPoints对象的语法:

{ "ecsProperties": { "taskProperties": [ { ..., "taskRoleArn": "arn:aws:iam::<account>:role/<job-role-name>", "containers": [ { ..., "mountPoints": [ { "sourceVolume": "myS3FilesVolume", "containerPath": "/mnt/s3data", "readOnly": false } ] } ], "volumes": [ { "name": "myS3FilesVolume", "s3filesVolumeConfiguration": { "fileSystemArn": "arn:aws:s3files:<region>:<account>:file-system/<fs-id>", "rootDirectory": "/keypath/in/s3" } } ] } ] } }
s3filesVolumeConfiguration

类型:对象

必需:否

此参数是在使用 S3 文件卷时指定的。

fileSystemArn

类型:字符串

是否必需:是

要使用的 S3 文件系统的完整 ARN。

rootDirectory

类型:字符串

必需:否

S3 文件系统中的目录,作为主机内的根目录挂载。如果省略此参数,则使用文件系统的根目录。指定/与忽略此参数效果相同。其长度最多为 4096 个字符。

重要

如果在中指定了 S3 文件访问点accessPointArn,则必须省略根目录参数或将其设置为/。这将强制使用在接入点上设置的路径。

transitEncryptionPort

类型:整数

必需:否

在 Amazon Batch 主机和 S3 文件服务器之间发送加密数据时使用的端口。如果您未指定传输加密端口,2049则使用默认值。该值必须在 0 到 65535 之间。S3 文件卷始终启用传输加密。

accessPointArn

类型:字符串

必需:否

要使用的 S3 文件接入点的 ARN。如果指定了接入点,则必须省略在s3filesVolumeConfiguration中的根目录值,或者将其设置为/。这将强制使用在接入点上设置的路径。接入点强制执行 POSIX 用户身份,并且可以限制对文件系统中特定目录的访问。有关更多信息,请参阅 A mazon S3 用户指南中的为 S3 文件系统创建接入点

将 S3 文件卷与 Amazon Batch 和 Amazon EKS 一起使用

对于使用 Amazon EKS 资源的作业,通过 EKS 任务定义卷配置persistentVolumeClaim中的 Amazon Batch 支持 S3 文件卷。在任务定义中引用永久卷和永久卷之前,您必须在 Amazon EKS 集群中预先创建永久卷和永久卷声明。

以下任务定义片段显示了如何引用 S3 文件永久卷声明:

{ "eksProperties": { "podProperties": { ..., "containers": [ { ..., "volumeMounts": [ { "name": "s3files-vol", "mountPath": "/mnt/s3data" } ] } ], "volumes": [ { "name": "s3files-vol", "persistentVolumeClaim": { "claimName": "<s3files-pvc-name>" } } ] } } }

有关使用 Amazon EKS 设置 S3 文件的更多信息,请参阅 Amazon S3 用户指南中的在亚马逊 EKS 中安装 S3 文件系统。有关完整的音量参数参考,请参阅 Amazon Batch API 参考EksVolume中的。