使用 Amazon S3 批量复制功能复制 Amazon S3 存储桶中的现有对象

教程

概览

本教程向您展示如何使用 Amazon Simple Storage Service(Amazon S3)批量复制功能在同一 AWS 区域或跨 AWS 区域复制存储桶中已存在的对象。

Amazon S3 复制是一项弹性、完全托管且成本低廉的功能,可在 Amazon S3 存储桶之间复制对象。您可以将新数据和现有数据从一个源存储桶复制到相同或不同 AWS 区域中的多个目标存储桶。无论您是想维护数据的辅助副本以保护数据,还是要将数据存储在多个地理位置以为用户提供最低延迟,S3 复制都能为您提供满足业务需求所需的控制。

您可以通过 Amazon S3 批量复制,使用现有对象来回填新创建的存储桶、重新复制已经复制或以前无法复制的对象、跨账户迁移数据,或者向数据湖添加新存储桶。S3 批量复制作业是在现有复制配置的基础上创建的,并针对为存储桶启用的所有复制规则运行。有关 S3 复制的更多信息,请访问 Amazon S3 用户指南中的复制对象部分;有关设置 S3 复制的分步教程,请访问使用 Amazon S3 复制在 AWS 区域内和区域之间复制数据。在本教程结束时,您将能够使用 Amazon S3 复制在 AWS 区域内和区域之间复制现有数据。

您将学到的内容

在本教程中,您将:

  • 在您的 Amazon S3 存储桶上配置 S3 复制
    • 创建两个 S3 存储桶
    • 在您的 S3 存储桶上创建一个 S3 复制规则
    • 选择目标 S3 存储桶
    • 选择或创建用于复制的 IAM 角色
    • 指定加密类型(可选)
    • 选择目标 S3 存储类
    • 启用其他复制选项(可选)
  •  通过以下方式为 Amazon S3 存储桶中的现有对象配置 S3 批量复制:
    • 在存储桶上创建新的复制配置或在现有复制配置中添加新目标时,创建 S3 批量复制作业
    • 从 S3 批量操作主页创建 S3 批量复制作业(推荐)
    • 从现有复制配置页面创建 S3 批量复制作业

先决条件

在开始学习本教程之前,您需要:

  • 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境教程中的说明获取快速概览。

 AWS 使用经验

新手

 完成时间

20 分钟

 所需费用

低于 1 USD
有关详细信息,请参阅 Amazon S3 定价页面

 需要

AWS 账户

 使用的服务

 上次更新日期

2023 年 6 月 30 日

实施

第 1 步:创建两个 Amazon S3 存储桶

1.1 使用您的账户信息登录 AWS 管理控制台。在搜索栏中输入 S3,然后从结果中选择 S3

1.2 在 S3 控制台的左侧导航窗格中,选择存储桶,然后选择创建存储桶

1.3 为您的源存储桶输入一个全局唯一的描述性名称。选择要在其中创建存储桶的 AWS 区域。在本示例中,选择了 EU (Frankfurt) eu-central-1 区域

1.4 启用存储桶版本控制。S3 复制的源和目标 S3 存储桶都需要使用存储桶版本控制。有关版本控制的更多信息,请参阅在 S3 存储桶中使用版本控制

1.5 您可以为其余选项保留默认值。导航到
页面底部,然后选择创建存储桶

1.6 重复上述步骤,创建另一个 S3 存储桶作为目标存储桶。对于 S3 Same-Region Replication(S3 SRR),这个新的存储桶可以与源存储桶位于同一 AWS 区域;而对于 S3 Cross-Region Replication(S3 CRR),它可以位于不同的 AWS 区域。确保为目标 S3 存储桶启用存储桶版本控制,并为新存储桶指定唯一名称。

步骤 2:在 S3 存储桶上创建 S3 复制配置

2.1 从 S3 存储桶列表中,选择您的 S3 存储桶。控制台将带您进入 S3 存储桶登录页面。

2.2 在 S3 存储桶登录页面上,您可以查看所选 S3 存储桶的对象属性权限指标管理访问点

管理选项卡的复制规则下,选择创建复制规则

2.3 输入复制规则名称,并确保在状态部分下选择已启用。如果禁用了复制规则,它将无法运行。

注意:Amazon S3 会尝试根据所有复制规则复制对象。但是,如果有两个或更多规则具有相同的目标存储桶,则会根据优先级最高的规则复制对象。数字越小,优先级越高。您可以选择在复制配置页面上编辑每条复制规则的优先级。 

2.4 通过定义筛选器类型前缀标签)来缩小复制范围,或者选择复制整个存储桶。例如,如果您只想复制包括前缀 Finance 的对象,请指定该范围。有关筛选复制对象的更多信息,请参阅 S3 用户指南中有关指定筛选器的文档。

2.5 通过选择浏览 S3按钮并输入整个存储桶名称,选择您创建的目标存储桶。

在复制设置过程中,无法创建新的 S3 存储桶。

2.6 从同一个源存储桶创建新的复制规则时,请确保与此配置关联的 AWS Identity and Access Management(IAM)角色有足够的权限在新目标存储桶中写入新对象。您可以选择创建新的 IAM 角色或选择具有正确权限集的现有 IAM 角色。如需更多信息,请参阅有关设置 S3 复制权限的文档。

2.7(可选)如果您的对象使用 Amazon S3 托管加密密钥(SSE-S3)AWS Key Management Service(AWS KMS)进行加密,请指定加密选项。S3 复制支持 SSE-S3(默认加密)、AWS KMS 服务器端加密(SSE-KMS)和使用客户提供的密钥进行服务器端加密(SSE-C)。如果您选择 AWS KMS 加密,请提供 AWS KMS 密钥以在源存储桶中解密并在目标存储桶中重新加密。为了节省 AWS KMS 成本,您可以启用 Amazon S3 存储桶密钥

2.8(可选)在目标存储桶上为复制的对象选择 S3 存储类。考虑根据您的工作负载选择成本较低的存储类别。例如,您可以选择 Intelligent-Tiering 来优化访问模式不可预测或不断变化的数据的存储成本;如果复制的对象很少被访问,但需要在几毫秒内检索,则可以选择 Glacier Instant Retrieval,或者选择 Glacier Deep Archive 来归档很少需要访问的数据。有关更多信息,请参阅使用 Amazon S3 存储类

2.9 选择您需要的任何其他复制选项:

  • 复制时间控制(RTC):S3 RTC 可帮助您满足合规性和业务要求,因为它提供在 15 分钟内复制 99.99% 的对象的 SLA。您可以启用 S3 RTC 以及 S3 CRR 和 S3 SRR。默认情况下,复制指标和通知处于启用状态。
  • 复制指标和通知 :对于非 RTC 规则,您可以选择复制指标和通知,它们提供了详细的指标,用于跟踪复制规则的待处理字节、待处理操作、失败操作和复制延迟的每分钟进度。
  • 删除标记复制 :选择删除标记复制意味着源存储桶上的删除内容将复制到目标存储桶。如果您想使源存储桶和目标存储桶保持同步,则应启用此功能,但如果目标是防止意外或恶意删除,则不应启用此功能。
  • 副本修改同步:要在两个 S3 存储桶之间建立双向复制,请创建双向复制规则(A 到 B,B 到 A),并同时为源和目标 S3 存储桶中的复制规则启用副本修改同步。这将帮助您在副本和源对象之间保持标签、ACL 和对象锁定设置等对象元数据的同步。

使用 S3 批量复制功能复制现有对象时,不支持 S3 RTC复制指标和通知以及副本修改同步

配置复制后,选择保存。 

2.10 在 S3 存储桶的新复制配置中创建第一条规则或向现有配置添加新的目标 AWS 区域时,可以选择为该复制规则启用现有对象复制。要复制现有对象,请选择 是,复制现有对象,然后选择提交

控制台会将您转至创建批量操作作业页面。

步骤 3:在创建新的复制配置时复制现有对象

创建批量操作作业页面上,可以查看 S3 批量操作作业
设置,如作业运行选项、S3 完成报告的范围和权限。

3.1 设置作业运行选项。如果您希望 S3 批量复制作业立即运行,则可以选择准备就绪后自动运行作业。如果要等待作业准备就绪后再运行,则可以保存批量操作清单以查看要复制的对象列表。

3.2 设置批量操作清单选项。Amazon S3 生成的清单文件使用与复制配置相同的源存储桶、前缀和标签,可列出所有符合复制条件的对象版本。建议始终选择保存批量操作清单,这样您就可以在复制开始之前查看对象列表。可以将清单保存在相同或不同的 AWS 账户中,但清单文件必须与源存储桶存储在同一 AWS 区域。

在此示例中,我们选择了“aws-s3-tutorial-batch-replication-manifest-destination”存储桶来保存清单文件,该清单文件与源存储桶位于同一 AWS 账户中。

3.3 为了提高安全性,请使用 Amazon S3 托管密钥(SSE-S3)或 AWS Key Management Service 密钥(SS3-KMS)对清单文件进行加密。

3.4 只要 S3 批量操作成功处理了至少一个对象,Amazon S3 就会在批量复制作业完成、失败或取消后生成完成报告。完成报告包含每项任务的附加信息,包括对象密钥名称和版本、状态、错误代码以及对任何错误的描述。建议选择“为所有任务生成完成报告”,这样您就可以查看使用此作业复制的所有对象的状态。有关完成报告的示例,请参阅示例:S3 批量操作完成报告

3.5 确保与此批量复制作业关联的 IAM 角色有足够的权限代表您执行 S3 批量操作。有关更多信息,请参阅有关为批量复制配置 IAM policy授予 Amazon S3 批量操作权限的文档。

查看配置,然后选择保存

您将被重定向到“批量操作”主页。

3.6 选择新作业的作业 ID 以查看作业配置。您还可以跟踪批量复制作业的状态

步骤 4:使用现有复制配置复制现有对象

除了按照上一步所述为新的复制规则创建复制作业外,您还可以为 S3 存储桶中的现有复制规则创建 S3 批量复制作业。为此,请返回 Amazon S3 控制台主页。

4.1 在控制台主页的左侧导航窗格中,选择 批量操作,然后选择 创建作业

4.2 在创建作业页面上,选择要在其中创建批量复制作业的 AWS 区域。您必须在源 S3 存储桶所在的同一 AWS 区域中创建作业。

4.3 提供要复制的对象的列表。您可以以 Amazon S3 清单报告或 CSV 文件的形式添加用户生成的清单。清单需要包含需要复制的所有对象版本。Amazon S3 还可以使用源存储桶上的现有 S3 复制配置为您生成清单。

注意:在此示例中,我们选择使用 S3 复制配置创建清单,让 Amazon S3 代表我们生成清单,并选择“aws-s3-replication-tutorial-source-bucket”作为源存储桶。如果您选择让 Amazon S3 为您生成清单,您还将看到其他筛选条件(例如对象创建日期和复制状态),可以缩小作业范围。

       4.4(可选)如果您选择保存批量操作清单,请使用 Amazon S3 托管密钥(SSE-S3)或 AWS Key Management Service 密钥(SSE-KMS)对清单文件进行加密,以提高安全性和访问控制。

  • 如果您未指定加密模式,Amazon S3 将使用清单目标存储桶上的默认加密设置来加密清单文件。
  • 如果目标存储桶未启用默认加密,Amazon S3 将使用 SSE-S3 对清单文件进行加密。

 

 

4.5 选择下一步以转至选择操作页面。

4.6 如果您在上一页选择了使用 S3 复制配置创建清单,则唯一的“操作”选项是复制。这是因为复制是使用 S3 生成的清单时允许的唯一操作。选择复制,然后选择下一步

4.7 配置其他选项:

  • 输入描述,为作业的用途提供最佳定义。
  • 选择优先级以指明此作业相对于在您的账户中运行的其他作业的相对优先级。数字越大,优先级越高。例如,优先级为 2 的作业将优先于优先级为 1 的作业。S3 批量操作根据优先级数字对作业进行优先排序,但不能保证严格排序。因此,您不应使用作业优先级来确保任何一项作业在任何其他作业之前开始或完成。如果您需要确保严格排序,请等到一项作业完成后再开始下一项作业。

4.8 选择是否要生成完成报告。 

4.9 选择有效的批量操作 IAM 角色以授予 Amazon S3 代表您执行操作的权限。

您还必须将批量复制 IAM policy 附加到批量操作 IAM 角色。 要创建有效的 IAM 角色和 IAM policy,请参阅为批量复制配置 IAM policy

4.10 向批量复制作业添加作业标签,然后选择下一步以查看您的作业配置。

 

4.11 在审阅页面上,选择编辑进行更改,然后选择下一步保存更改并返回审阅页面。

作业准备就绪后,选择创建作业。 

 

4.12 创建批量复制作业后,批量操作会处理清单。如果成功,它会将作业状态更改为等待您确认运行。必须先确认作业的详细信息,然后才能运行作业。

作业成功后,批量操作页面的顶部会显示一个横幅。

步骤 5:从 S3 复制配置页面创建批量复制作业

5.1 从 S3 存储桶列表中,选择要配置为复制源的 S3 存储桶。

控制台将带您进入 S3 存储桶登录页面。

5.2 查看所选 S3 存储桶的对象属性权限指标管理访问点

5.3 在管理选项卡的复制规则下,选择查看复制配置

5.4 在源存储桶的复制配置主页上,选择创建复制作业以转到 S3 批量操作的创建作业页面。重复上述步骤,使用现有复制配置创建批量复制作业。

步骤 6:监控 S3 批量复制作业的进度

创建并运行批量复制作业后,它会经历一系列状态。您可以参考批量操作主页上的这些状态来跟踪批量复制作业的进度。

例如,作业在创建时处于新建状态,在 Amazon S3 处理清单和其他作业参数时变为准备中状态,然后在准备好运行时变为就绪状态,在进行处理时变为活动状态,最后在处理完成时变为完成状态。有关作业状态的完整列表,请参阅批量操作作业状态

在创建批量复制作业时,您可以选择生成完成报告,以跟踪对象复制的状态。完成报告是一个 CSV 文件,该文件由 Amazon S3 在作业完成、失败或取消后生成,前提是使用 S3 批量操作成功调用了至少一项任务。

此外,如果您为复制规则启用了复制指标S3 Replication Time Control(S3 RTC),则可以使用“复制失败操作”指标,在 Amazon S3 控制台和 Amazon CloudWatch 控制台上查看每分钟失败的操作数。有关更多信息,请参阅 S3 批量操作完成报告使用 S3 复制指标监控进度

步骤 7:清理资源

删除测试对象

  1. 如果您已注销 AWS 管理控制台会话,请重新登录。
  2. 导航至 S3 控制台,然后选择存储桶菜单选项。
  3. 首先,您需要从测试存储桶中删除测试对象。选择您在本教程中使用的存储桶。
  4. 选择测试对象,然后选择删除
  5. 删除对象页面上,确认您选择了要删除的正确对象,在确认字段中输入 delete,然后选择删除对象

页面顶部的横幅表示删除成功。

删除测试存储桶

  1. 返回账户中的存储桶列表。
  2. 选择您为本教程创建的存储桶左侧的单选按钮,然后选择删除
  3. 在确认字段中输入存储桶名称,然后选择删除存储桶
  4. 重复这些步骤,删除您在本教程中创建的目标存储桶。

页面顶部的横幅表示删除成功。

总结

恭喜! 您已经学习了如何使用 S3 批量复制功能将现有对象从源 S3 存储桶复制到目标 S3 存储桶,以使用现有对象回填新创建的存储桶、复制以前复制过的对象,以及复制过去未能复制的对象。使用 S3 批量复制功能时,建议使用 S3 生成的清单自动列出要复制的对象。您还应保存复制清单,以备将来查看和分析。最后,我们建议生成完成报告,以跟踪使用 S3 批量复制功能复制的对象的状态。

后续步骤

要了解有关 S3 复制的更多信息,请访问以下资源。

S3 批量复制文档

S3 复制常见问题

使用 Amazon S3 批量复制复制现有对象博客

使用 Amazon S3 复制在 AWS 区域内和区域之间复制数据