View a markdown version of this page

Amazon S3 Files 卷 - AWS Batch

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

Amazon S3 Files 卷

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

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

亚马逊 S3 文件容量注意事项

使用 S3 文件卷时请考虑以下几点:

  • 您可以在 Fargate、亚马逊 EC2 和 Amazon ECS 托管实例计算环境中使用 S3 文件卷。在亚马逊 EC2 计算环境中,支持 S3 文件需要最新亚马逊 ECS-optimized AMI 中包含的 Amazon ECS 容器代理版本。默认情况下,2026 年 6 月 19 日之后创建的任何亚马逊 EC2 计算环境都包含此支持。要为现有 Amazon EC2 计算环境添加 S3 文件支持,请将计算环境更新到最新的 Amazon ECS-optimized AMI 版本。有关更多信息,请参阅 在计算环境中管理 AMI 版本。

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

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

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

使用 Amazon S3 文件访问点

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

注意

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

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

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

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

{ "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

类型:整数

必需:否

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

accessPointArn

类型:字符串

必需:否

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

将 S3 文件卷与 AWS Batch 还有亚马逊 EKS

对于使用 Amazon EKS 资源的任务,通过 EKS 任务定义卷配置 AWS Batch 支持 S3 文件卷。persistentVolumeClaim您必须先在 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 用户指南中的在 Amazon EKS 中挂载 S3 文件系统。有关完整的音量参数参考,请参阅 AWS Batch API 参考EksVolume中的。