使用 S3 分批复制以复制现有对象 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 S3 分批复制以复制现有对象

S3 批处理复制为您提供了一种方法,以复制在复制配置实施之前就已存在的对象、之前已复制的对象和复制失败的对象。此操作通过使用批量操作任务完成。这与实时复制不同,后者连续自动跨 Amazon S3 存储桶复制新对象。要开始使用分批复制,您可以:

  • 为新的复制规则或目标启动分批复制 – 您可以在新复制配置中创建第一个规则或通过 Amazon Web Services Management Console 向现有配置添加新目标时创建一次性分批复制任务。

  • 为现有复制配置启动分批复制 – 您可以通过 Amazon SDK、Amazon Command Line Interface(Amazon CLI)或 Amazon S3 控制台使用 S3 批量操作创建新的分批复制任务。

分批复制任务完成后,您将收到完成报告。有关如何使用报告检查任务的更多信息,请参阅 跟踪任务状态和完成报告

S3 分批复制注意事项

  • 您的源存储桶必须具有现有的复制配置。要启用复制,请参阅 设置复制演练:配置复制的示例

  • 如果您为存储桶配置了 S3 生命周期,我们建议在分批复制任务处于活动状态时禁用生命周期规则。这将确保源存储桶和目标存储桶的对等。否则这些存储桶可能会出现差异,目标存储存储桶将不会与源存储存储桶完全一样。请考虑以下事项:

    • 您的源存储桶中一个对象有多个版本和一个删除标记。

    • 您的源存储桶和目标存储桶具有移除已过期删除标记的生命周期配置。

    分批复制可能会在复制对象版本之前将删除标记复制到目标存储桶。这可能会导致删除标记被标记为已过期,并在复制对象之前从目标存储桶中移除。

  • 您指定用于运行批量操作任务的 Amazon Identity and Access Management(IAM)角色必须有权执行基础的分批复制操作。有关创建 IAM 角色的更多信息,请参阅 配置 IAM 策略以进行分批复制

  • 分批复制需要可以由 Amazon S3 生成的清单。生成的清单必须存储在与源存储桶相同的 Amazon Web Services 区域 中。如果您选择不生成清单,则可以提供包含要复制的对象的 Amazon S3 清单报告或 CSV 文件。

  • 批处理复制不支持重新复制从目标存储桶中使用对象的版本 ID 删除的对象。要重新复制这些对象,您可以使用分批复制任务将源对象复制到位。将这些对象复制到位会在源存储桶中创建对象的新版本,并自动启动到目标的复制。删除和重新创建目标存储桶不会启动复制。

    有关批量复制的更多信息,请参阅使用分批操作复制对象的示例

  • 如果您在 S3 存储桶上使用复制规则,请确保更新您的复制配置,向附加到复制规则的 IAM 角色授予复制对象的适当权限。IAM 角色必须具有对源和目标存储桶执行 S3 操作的权限。

  • 如果您在短时间内为同一个存储桶提交多个批量复制任务,S3 将同时运行这些任务。

  • 如果您为两个不同的存储桶提交多个批量复制任务,请注意 S3 可能无法同时运行所有任务。如果您超过了账户中一次可以运行的批量复制任务的数量,S3 将暂停优先级较低的任务,以处理优先级较高的任务。优先级较高的项目完成后,任何暂停的任务都将再次变为活动状态。

  • 存储在 S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 存储类中的对象不支持批量复制。

  • 要批量复制存储在归档访问或深度归档访问存储层中的 S3 Intelligent-Tiering 对象,必须首先启动还原请求,然后等待对象移动到频繁访问层。

为分批复制任务指定清单

清单是一种 Amazon S3 对象,其中包含您希望 Amazon S3 采取操作的对象键。如果您希望创建分批复制任务,则必须提供用户生成的清单,或者让 Amazon S3 根据复制配置生成清单。

如果您提供用户生成的清单,则必须采用 Amazon S3 清单报告或 CSV 文件的形式。如果清单中的对象位于受版本控制的存储桶中,则必须指定对象的版本 ID。只有在清单中指定了版本 ID 的对象才会复制。要了解有关指定清单的更多信息,请参阅 指定清单

如果您选择让 Amazon S3 代表您生成清单文件,那么列出的对象将使用与源存储桶的所有复制配置相同的源存储桶、前缀和标签。使用生成的清单,Amazon S3 将复制所有符合条件的对象版本。

注意

如果您选择生成清单,它必须存储在与源存储桶相同的 Amazon Web Services 区域 中。

分批复制任务的筛选条件

在创建分批复制任务时,您可以选择指定其他筛选条件,例如对象创建日期和复制状态以缩小任务的范围。

您可以通过提供以下一个或多个值基于 ObjectReplicationStatuses 值筛选要复制的对象:

  • "NONE" – 表示 Amazon S3 之前从未尝试过复制对象。

  • "FAILED" – 表示 Amazon S3 之前尝试过,但未成功复制对象。

  • "COMPLETED" – 表示 Amazon S3 之前已成功复制对象。

  • "REPLICA" – 表示这是 Amazon S3 从另一个源复制的副本对象。

有关复制状态的更多信息,请参阅 获取复制状态信息

如果不根据复制状态进行筛选,批量操作将尝试复制符合条件的所有内容。根据您的目标,您可以将 ObjectReplicationStatuses 设置为以下值之一:

  • 如果您只想复制从未复制过的现有对象,请仅包括 "NONE"

  • 如果您只想重试复制之前未能复制的对象,请仅包括 "FAILED"

  • 如果要同时复制现有对象和重试复制之前未能复制的对象,请同时包括 "NONE""FAILED"

  • 如果您想使用已复制到另一个目标的对象回填目标存储桶,请包括 "COMPLETED"

  • 如果要复制之前已复制的对象,请包括 "REPLICA"

分批复制完成报告

在创建批量复制任务时,您可以请求 CSV 完成报告。此报告显示对象、复制成功或失败代码、输出和描述。有关任务跟踪和完成报告的更多信息,请参阅完成报告

有关复制失败代码和描述的列表,请参阅 Amazon S3 复制失败原因

批量复制入门

要了解有关如何使用批量复制的更多信息,请参阅教程:使用 S3 批量复制来复制 Amazon S3 存储桶中的现有对象