对 S3 Express One Zone 使用批量操作 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对 S3 Express One Zone 使用批量操作

您可以使用 Amazon S3 批量操作对存储在 S3 存储桶中的对象执行操作。要了解有关 S3 批量操作的更多信息,请参阅对 Amazon S3 对象执行大规模批量操作

以下主题讨论对存储在目录桶的 S3 Express One Zone 存储类中的对象执行批量操作。

对目录存储桶使用批量操作

您可以对存储在目录桶中的对象执行复制操作和调用 Amazon Lambda 函数操作。通过复制,您可以在相同类型的桶之间复制对象(例如,从目录桶复制到目录桶)。您也可以在通用存储桶和目录存储桶之间进行复制。通过调用 Amazon Lambda 函数操作,您可以通过 Lambda 函数使用您定义的代码对目录存储桶中的对象执行操作。

复制对象

您可以在相同的存储桶类型之间进行复制,也可以在目录存储桶和通用存储桶之间进行复制。当您复制到目录桶时,必须为此桶类型使用正确的 Amazon 资源名称(ARN)格式。目录存储桶的 ARN 格式为 arn:aws:s3express:region:account-id:bucket/bucket-base-name--x-s3

您也可以使用 S3 控制台中的导入操作在目录存储桶中填充数据。导入是一种创建批量操作作业的简化方法,用于将对象从通用存储桶复制到目录存储桶。对于从通用存储桶到目录存储桶的导入复制作业,S3 会自动生成清单。有关更多信息,请参阅将对象导入到目录桶指定清单

调用 Lambda 函数(LambdaInvoke

使用批量操作来调用处理目录存储桶的 Lambda 函数有特殊要求。例如,您必须使用 v2 JSON 调用架构来构建 Lambda 请求,并在创建任务时指定 InvocationSchemaVersion 2.0。有关更多信息,请参阅调用 Amazon Lambda 函数

主要区别

下面列出了使用批量操作对存储在目录桶(使用 S3 Express One Zone 存储类)中的对象执行批量操作时的主要区别:

  • 对于目录存储桶,支持 SSE-S3 和具有 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)。如果您发出 CopyObject 请求来指定在目录存储桶(源或目标)上使用具有客户提供的密钥的服务器端加密(SSE-C),则响应将返回 HTTP 400 (Bad Request) 错误。

    我们建议存储桶的默认加密使用所需的加密配置,并且不要在 CreateSession 请求或 PUT 对象请求中覆盖存储桶默认加密。然后,使用所需的加密设置自动对新对象进行加密。有关目录存储桶中的加密覆盖行为以及如何使用 SSE-KMS 加密目录存储桶中的新对象副本的更多信息,请参阅 Specifying server-side encryption with Amazon KMS for new object uploads

    当您通过批量操作中的 Copy 操作将 SSE-KMS 加密的对象从通用存储桶复制到目录存储桶、从目录存储桶复制到通用存储桶,或在目录存储桶之间复制时,不支持 S3 存储桶密钥。在这种情况下,每次对 KMS 加密的对象发出复制请求时,Amazon S3 都会调用 Amazon KMS。有关在目录存储桶上使用 SSE-KMS 的更多信息,请参阅设置和监控目录存储桶的默认加密在目录存储桶中使用具有 Amazon KMS 密钥的服务器端加密(SSE-KMS)

  • 无法标记目录存储桶中的对象。您只能指定一个空标签集。默认情况下,批量操作会复制标签。如果您在通用桶和目录桶之间复制带有标签的对象,则将收到 501 (Not Implemented) 响应。

  • S3 Express One Zone 可让您选择用于在上传或下载过程中验证数据的校验和算法。您可以选择以下安全哈希算法(SHA)或循环冗余校验(CRC)数据完整性检查算法之一:CRC32、CRC32、SHA-1 和 SHA-256。S3 Express One Zone 存储类不支持基于 MD5 的校验和。

  • 默认情况下,所有 Amazon S3 桶都将 S3 对象所有权设置设为强制桶拥有者,并禁用访问控制列表(ACL)。对于目录存储桶,无法修改此设置。您可以将对象从通用存储桶复制到目录存储桶。然而,当您复制到目录桶或从目录桶复制时,无法覆盖默认 ACL。

  • 无论您如何指定清单,列表本身都必须存储在通用存储桶中。批量操作无法从目录桶中导入现有清单,也无法将生成的清单保存到目录桶。但是,清单中描述的对象可以存储在目录存储桶中。

  • 批量操作无法将目录桶指定为 S3 清单报告中的位置。清单报告不支持目录桶。您可以使用 ListObjectsV2 API 操作列出对象,为目录桶中的对象创建清单文件。然后,您可以在 CSV 文件中插入该列表。

授予访问权限

要执行复制作业,您必须拥有以下权限:

  • 要将对象从一个目录存储桶复制到另一个目录存储桶,您必须拥有 s3express:CreateSession 权限。

  • 要将对象从目录存储桶复制到通用存储桶,您必须拥有将对象副本写入目标存储桶的 s3express:CreateSession 权限和 s3:PutObject 权限。

  • 要将对象从通用桶复制到目录桶,您必须拥有读取正在复制的源对象的 s3express:CreateSession 权限和 s3:GetObject 权限。

    有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 CopyObject

  • 要调用 Lambda 函数,您必须根据 Lambda 函数授予对资源的权限。要确定需要哪些权限,请检查相应的 API 操作。