使用批量复制以复制现有对象 - Amazon Simple Storage Service

使用批量复制以复制现有对象

S3 批量复制与实时复制不同,后者连续自动跨 Amazon S3 存储桶复制新对象。相反,S3 批量复制是按需对现有对象进行的。可以使用 S3 批量复制来复制以下类型的对象:

  • 在复制配置设立之前已经存在的对象

  • 以前已复制的对象

  • 复制失败的对象

您可以使用批量操作任务来按需复制这些对象。

要开始使用批量复制,您可以:

  • 为新的复制规则或目标启动批量复制 – 可以在新的复制配置中创建第一条规则时,或通过 Amazon S3 控制台向现有配置添加新的目标存储桶时,创建一次性批量复制任务。

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

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

S3 分批复制注意事项

使用 S3 批量复制之前,请查看以下注意事项列表:

  • 您的源存储桶必须具有现有的复制配置。要启用复制,请参阅 设置实时复制概述配置实时复制的示例

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

    • 您的源存储桶有某个对象的多个版本,并且对于该对象有一个删除标记。

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

    在这种情况下,批量复制可能会在复制对象版本之前,将删除标记复制到目标存储桶。这种行为可能导致在复制对象版本之前,生命周期配置将删除标记标为过期,并且从目标存储桶中移除删除标记。

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

  • 批量复制需要可以由 Amazon S3 生成的清单。生成的清单必须存储在与源存储桶相同的 AWS 区域 中。如果您选择不生成清单,则可以提供包含要复制的对象的 Amazon S3 清单报告或 CSV 文件。有关更多信息,请参阅 为分批复制任务指定清单

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

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

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

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

  • 如果您为两个不同的存储桶提交多个批量复制任务,请注意 Amazon S3 可能无法同时运行所有任务。如果您超过了账户中一次可以运行的批量复制任务的数量,Amazon 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 S3 生成清单,则清单必须存储在与源存储桶相同的 AWS 区域中。

分批复制任务的筛选条件

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

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

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

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

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

  • "REPLICA" – 表示此对象是 Amazon S3 已从另一个源存储桶复制的副本。

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

如果您不筛选批量复制任务,批量操作会尝试复制清单中与复制配置中的规则匹配的所有对象(无论其 ObjectReplicationStatus 如何),但默认情况下未复制的某些对象除外。有关更多信息,请参阅 使用复制配置不会复制什么?

根据您的目标,您可以将 ObjectReplicationStatuses 设置为以下一个或多个值:

  • 要复制从未复制过的现有对象,请仅包括 "NONE"

  • 要重试复制之前未能复制的对象,请仅包括 "FAILED"

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

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

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

分批复制完成报告

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

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

有关排查批量复制故障的信息,请参阅批量复制错误

批量复制入门

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