使用 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 软件开发工具包、Amazon Command Line Interface (Amazon CLI) 或 Amazon S3 控制台使用 S3 Batch Operations(S3 分批操作)创建新的分批复制任务。

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

S3 分批复制注意事项

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

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

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

    • 您的源存储桶和目标存储桶具有将会移除已过期删除标记的生命周期策略。

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

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

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

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

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

为分批复制任务指定清单

清单是一种 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"

分批复制完成报告

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

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