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

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

您可以使用 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

注意

当源存储桶或目标存储桶位于 Amazon 本地区域时,不支持跨不同 Amazon Web Services 区域复制对象。源存储桶和目标存储桶必须具有相同的父 Amazon Web Services 区域。源存储桶和目标存储桶可以是不同的存储桶位置类型(可用区或本地区域)。

您也可以使用 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 操作。