对 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),则响应将返回 HTTP400 (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 操作。