Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

基础知识:Amazon S3 批量操作作业

您可以使用 Amazon S3 批处理操作对 Amazon S3 对象执行大规模批量操作。Amazon S3 批处理操作可以对您指定的 Amazon S3 对象列表执行单个操作。

Amazon S3 批量操作作业的工作原理

作业是用于 Amazon S3 批处理操作的基本工作单位。作业包含要对对象列表执行指定操作所需的全部信息。

要创建作业,您需要向 Amazon S3 批处理操作提供对象列表并指定要对这些对象执行的操作。Amazon S3 批处理操作支持以下操作:

您希望作业对其执行操作的对象列在清单对象中。作业将对其清单中包含的每个对象执行指定操作。您可以使用 CSV 格式的 Amazon S3 清单 报告作为清单,这样便于轻松创建位于存储桶中的大型对象列表。您还可以指定采用简单的 CSV 格式的清单,这样您便可对单个存储桶中包含的对象的自定义列表执行批量操作。

在您创建作业后,Amazon S3 将处理清单中的对象列表并对每个对象执行请求的操作。在执行作业时,您可以编程方式或通过 Amazon S3 控制台监控其进度。您还可以对作业进行配置,以便在其完成时生成完成报告。完成报告会描述作业执行的每个任务的结果。有关监控作业的更多信息,请参阅管理批量操作作业

指定清单

清单是一种 Amazon S3 对象,列出您希望 Amazon S3 采取操作的对象键。要为作业指定清单,您需要指定清单对象键、ETag 和可选的版本 ID。清单的内容必须进行 URL 编码,并且不支持使用客户提供的密钥进行服务器端加密 (SSE-C) 和使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 进行加密的清单。

您可以使用以下两种格式之一,在创建作业请求中指定清单。

  • Amazon S3 清单报告 — 必须是 CSV 格式的 Amazon S3 清单报告。您必须指定与清单报告关联的 manifest.json 文件。有关清单报告的更多信息,请参阅 Amazon S3 清单。如果清单报告包括版本 ID,Amazon S3 批处理操作将对特定对象版本指定操作。

  • CSV 文件 — 文件中的每一行必须包括存储桶名称、对象键以及可选的对象版本。对象键必须进行 URL 编码,如以下示例所示。清单必须包含所有对象的版本 ID 或忽略所有对象的版本 ID。有关 CSV 清单格式的更多信息,请参阅 Amazon Simple Storage Service API Reference 中的 JobManifestSpec

    下面是 CSV 格式的没有版本 ID 的清单示例:

    Examplebucket,objectkey1 Examplebucket,objectkey2 Examplebucket,objectkey3 Examplebucket,photos/jpgs/objectkey4 Examplebucket,photos/jpgs/newjersey/objectkey5 Examplebucket,object%20key%20with%20spaces

    下面是 CSV 格式的包含版本 ID 的清单示例。

    Examplebucket,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p Examplebucket,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF Examplebucket,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI Examplebucket,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 Examplebucket,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs Examplebucket,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w

重要

如果清单中的对象位于受版本控制的存储桶中,则应指定对象的版本 ID。创建作业时,Amazon S3 批处理操作会在运行作业之前解析整个清单。不过,它不会获取存储桶状态的“快照”。

由于清单可能包含数十亿个对象,因此作业运行可能需要很长时间。如果您在作业运行时用新版本覆盖对象并且未指定该对象的版本 ID,Amazon S3 将对该对象的最新版本而非您创建作业时存在的版本执行操作。避免此行为的唯一方式是为清单中列出的对象指定版本 ID。