Amazon Simple Storage Service
控制台用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如何向 S3 存储桶添加跨区域复制 (CRR) 规则?

跨区域复制是跨不同 AWS 区域中的存储桶自动、异步地复制对象。跨区域复制仅将新创建的对象和对象更新从源存储桶复制到不同 AWS 区域中的目标存储桶。有关跨区域复制概念以及如何将 CRR 与 AWS CLI、AWS 开发工具包和 Amazon S3 REST API 结合使用的更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的跨区域复制

跨区域复制要求源和目标存储桶位于不同的 AWS 区域,并且必须对源和目标存储桶启用版本控制。要查看要求的完整列表,请参阅 Amazon Simple Storage Service 开发人员指南 中的跨区域复制的要求。有关版本控制的更多信息,请参阅如何为 S3 存储桶启用或暂停版本控制?

目标存储桶中的对象副本是源存储桶中对象的精确副本。它们具有相同的键名和元数据;例如,创建时间、拥有者、用户定义的元数据、版本 ID、访问控制列表 (ACL) 和存储类。您也可以选择为对象副本明确指定不同的存储类。无论谁拥有此源存储桶或源对象,您都可以选择将副本的所有权更改为拥有目标存储桶的 AWS 账户。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的 CRR:更改副本拥有者

Amazon S3 复制对象所需的时间取决于对象大小。可能需要几个小时才能复制大型对象。

有关复制和生命周期规则的备注

一个对象的元数据在原始对象和副本对象之间保持相同。生命周期规则遵守原始对象的创建时间,而不是复制的对象在目标存储桶中变为可用状态的时间。但是,在复制完成前,不会对等待复制的对象执行生命周期操作。

您使用 Amazon S3 控制台向源存储桶添加复制规则。复制规则定义要复制的源存储桶对象和存储已复制对象的目标存储桶。您可以创建一条规则,以复制存储桶中的所有对象或具有特定键名前缀和/或一个或多个对象标签的对象子集。目标存储桶与源存储桶可以位于同一 AWS 账户中,也可以位于不同的账户中。目标存储桶与源存储桶必须始终位于不同的区域。

如果目标存储桶与源存储桶位于不同的账户中,您必须向目标存储桶添加存储桶策略以便为源存储桶账户的所有者授予复制目标存储桶中的对象的权利。Amazon S3 控制台将构建此必需策略以便让您复制并添加到其他账户中的目标存储桶。

当您将复制规则添加到存储桶后,默认情况下将启用复制规则,使该规则在您保存它后立即启动。

当目标存储桶位于同一 AWS 账户中时添加 CRR 规则

当目标存储桶与源存储桶位于同一 AWS 账户中时,可按照以下步骤来配置跨区域复制规则。

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. Bucket name (存储桶名称) 列表中,选择所需的存储桶的名称。

    
            存储桶名称处于选中状态的“Bucket name”(存储桶名称) 列表
  3. 依次选择 ManagementReplicationAdd rule

    
            “Replication”(复制) 和“Add rule”(添加规则) 处于选中状态的“Management”(管理) 选项卡
  4. 除了 Replication rule (复制规则) 向导的 Set source (设置源) 下,您可以通过以下选项设置复制源:

    • 要复制整个存储桶,请选择整个存储桶存储桶名称

    • 要复制具有相同前缀的所有对象(例如,名称以字符串 pictures 开头的所有对象),请选择 Prefix or tags (前缀或标签)。在框中输入前缀,从下拉列表中选择前缀,然后按 Enter。如果您输入属于文件夹名称的前缀,您必须使用 / (正斜杠) 作为最后一个字符 (例如,pictures/)。有关前缀的更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的对象键

    • 要复制具有一个或多个对象标签的所有对象,请在框中键入一个标签,从下拉列表中选择此标签,然后按 Enter。键入标签值,然后按 Enter。重复上述过程以添加其他标签。您可以组合前缀和标签。有关对象标签的更多信息,请参阅Amazon Simple Storage Service 开发人员指南中的对象标签

    
            复制规则向导步骤 1:配置源。

    您可能收到以下有关使用新架构创建 CRR 规则的警告。

    
            复制规则向导步骤 1:配置源。

    新架构支持前缀和标签筛选以及规则的优先级。有关新架构的更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的复制配置向后兼容性。开发人员指南介绍了在用户界面后台工作的 Amazon S3 API 所使用的 XML。在开发人员指南中,将新架构描述为复制配置 XML V2

  5. 要复制源存储桶中使用 AWS KMS 加密的对象,请在 Replication criteria (复制标准) 下方,选择 Replicate objects encrypted with AWS KMS (复制使用 AWS KMS 加密的对象)。在 Choose one or more keys for decrypting source objects (选择一个或多个用于解密源对象的密钥) 下方是您允许跨区域复制使用的源 AWS KMS 密钥。默认情况下,所有源密钥都包含在内。您可以选择缩小密钥选择的范围。

    使用您未选择的 AWS KMS 密钥加密的对象不会进行跨区域复制。系统为您选择一个密钥或一组密钥,您可以自行选择密钥。有关将 AWS KMS 用于跨区域复制的信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的 CRR:复制使用 AWS KMS 托管加密密钥通过服务器端加密 (SSE) 创建的对象

    
            复制规则向导步骤 1:选择 AWS KMS。

    重要

    在复制使用 AWS KMS 加密的对象时,AWS KMS 请求速率会在源区域中加倍并在目标区域中增加相同的量。之所以对 AWS KMS 的调用率会增加,是因为数据是使用您为跨区域复制目标区域定义的客户主密钥 (CMK) 进行重新加密的。对于每个区域的每个调用账户,AWS KMS 设定了一个请求速率限制。有关限制默认值的信息,请参阅 AWS KMS 限制 - 每秒请求数:因情况而异

    如果您在跨区域复制期间的当前 Amazon S3 PUT 对象请求速率超过您账户的默认 AWS KMS 速率限制的一半,则建议您请求提高您的 AWS KMS 请求速率限制。要请求提高,请在联系我们处的 AWS 支持中心中创建一个案例。例如,假设您当前的 PUT 对象请求速率为每秒 1000 个请求并且您使用 AWS KMS 加密对象。在此情况下,建议您让 AWS Support 将您在源区域和目标区域中的 AWS KMS 速率限制提高到每秒 2500 个请求,以确保不受 AWS KMS 的限制。

    要查看源存储桶中的 PUT 对象请求速率,请查看 Amazon S3 的 Amazon CloudWatch 请求指标中的 PutRequests。有关查看 CloudWatch 指标的信息,请参阅如何为 S3 存储桶配置请求指标?

    选择 Next

  6. 要从您当前使用的账户中选择一个目标存储桶,请在 Set destination (设置目标) 页面上的 Destination bucket (目标存储桶) 下,选择 Buckets in this account (此账户中的存储桶)。键入要复制的目标存储桶的名称,或者在下拉列表中选择一个名称。如果您在此列表中没有看到所需的存储桶,请验证该存储桶是否存在并且与源存储桶位于不同的区域。

    如果您希望选择来自不同 AWS 账户的目标存储桶,请参阅当目标存储桶位于其他 AWS 账户中时添加 CRR 规则

    
            “Buckets in this account”(此账户中的存储桶) 处于选中状态的“Destination bucket”(目标存储桶) 部分

    如果未对目标存储桶启用版本控制,您将收到一条包含 Enable versioning 按钮的警告消息。选择此按钮可对存储桶启用版本控制。

  7. 如果您选择复制通过 AWS KMS 加密的对象,请在 Destination encryption settings (目标加密设置) 下方,键入 AWS KMS 密钥的 Amazon 资源名称 (ARN),以便用于加密目标存储桶中的副本。您可以在 IAM 控制台中的 Encryption keys (加密密钥) 下方找到您的 AWS KMS 密钥的 ARN。或者,您可以从下拉列表中选择一个键名。

    有关创建 AWS KMS 密钥的更多信息,请参阅AWS Key Management Service Developer Guide中的创建密钥

    
            输入 AWS KMS 密钥以加密目标存储桶中的对象。
  8. 如果您希望将数据复制到目标存储桶中的特定存储类,请在 Set destination (设置目标) 页面上的 Options (选项) 下方,选择 Change the storage class for the replicated object(s) (更改已复制对象的存储类)。然后选择要用于目标存储桶中的已复制对象的存储类。如果您不选择此选项,已复制对象的存储类将与原始对象的类相同。

    有关将对象所有权更改为目标存储桶拥有者的信息,请参阅当目标存储桶位于其他 AWS 账户中时添加 CRR 规则

    选择 Next

  9. 设置一个 AWS Identity and Access Management (IAM) 角色,Amazon S3 可代入该角色以代表您执行对象的跨区域复制。

    要设置 IAM 角色,请在 Configure options (配置选项) 页面上的 Select role (选择角色) 下,执行下列操作之一:

    • 我们强烈建议您选择 Create new role (创建新角色),让 Amazon S3 为您创建一个新的 IAM 角色。当您保存该规则后,将为 IAM 角色生成一个与您选择的源和目标存储桶匹配的新策略。生成的角色的名称基于存储桶名称并使用以下命名约定:replication_role_for_source-bucket_to_destination-bucket

    • 您可以选择使用现有的 IAM 角色。在这种情况下,您必须选择一个角色,该角色会授予 Amazon S3 必要的权限以进行复制。如果该角色未按照您的复制规则授予 Amazon S3 足够的权限,复制会失败。

    重要

    将复制规则添加到存储桶时,您必须具有 iam:PassRole 权限才能传递授予 Amazon S3 复制权限的 IAM 角色。有关更多信息,请参阅IAM 用户指南中的向用户授予将角色传递给 AWS 服务的权限

    
            为您的复制选择 IAM 角色

    Rule name (规则名称) 下,键入规则的名称以帮助稍后标识规则。该名称是必填项,并且它在存储桶内必须是唯一的。

  10. 如果存储桶具有现有的复制规则,系统会指示您为规则设置优先级。必须为规则设置优先级,以避免因在多个规则的范围内包含对象而引起冲突。如果规则重叠,Amazon S3 会使用规则优先级确定要应用哪个规则。数字越大,优先级越高。有关规则优先级的更多信息,请参阅Amazon Simple Storage Service 开发人员指南中的复制配置概述

    Status 下的 Enabled 默认处于选中状态。已启用的规则将在您保存它后立即开始工作。如果您想之后启用该规则,请选择 Disabled

    选择 Next

    
            设置复制规则优先级和状态
  11. Review 页面上,检查您的复制规则。如果它看起来正确,请选择 Save。否则,请选择 Previous 以在保存规则之前编辑规则。

  12. 当您保存规则之后,您可在 Replication 页面上编辑、启用、禁用或删除您的规则。

    
            显示规则详细信息和选项的“Replication”(复制) 页面

当目标存储桶位于其他 AWS 账户中时添加 CRR 规则

当目标存储桶与源存储桶位于不同 AWS 账户中时,可按照以下步骤来配置跨区域复制规则。

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. Bucket name (存储桶名称) 列表中,选择所需的存储桶的名称。

    
            存储桶名称处于选中状态的“Bucket name”(存储桶名称) 列表
  3. 依次选择 ManagementReplicationAdd rule

    
            “Replication”(复制) 和“Add rule”(添加规则) 处于选中状态的“Management”(管理) 选项卡
  4. Replication rule (复制规则) 向导的 Set destination (设置目标) 页面中,在 Destination bucket (目标存储桶) 下方选择 Buckets in another account (另一账户中的存储桶)。然后,键入另一个 AWS 账户的目标存储桶和账户 ID。选择 Save

    
            选择不同 AWS 账户中的目标存储桶

    在保存目标存储桶名称和账户 ID 之后,您可能收到一条警告消息,指示您必须向目标存储桶添加存储桶策略以便让 Amazon S3 验证是否已对此存储桶启用版本控制。如果在源存储桶上启用了版本控制,您可以从权限页面中复制存储桶策略,然后将该策略添加到另一个账户中的目标存储桶。有关将存储桶策略添加到 S3 存储桶以及进行版本控制的信息,请参阅如何添加 S3 存储桶策略?如何为 S3 存储桶启用或暂停版本控制?

    
            表明 S3 无法检测是否已对目标存储桶启用版本控制的警告消息
  5. 如果您选择复制通过 AWS KMS 加密的对象,请在 Destination encryption settings (目标加密设置) 下方,键入 AWS KMS 密钥的 Amazon 资源名称 (ARN),以便用于加密目标存储桶中的副本。

    有关创建 AWS KMS 密钥的更多信息,请参阅AWS Key Management Service Developer Guide中的创建密钥

    
            输入 AWS KMS 密钥以加密目标存储桶中的对象。
  6. Set destination (设置目标) 页面上的 Options (选项) 下:

    • 要将数据复制到目标存储桶中的特定存储类,请选择 Change the storage class for the replicated object(s) (更改已复制对象的存储类)。然后选择要用于目标存储桶中的已复制对象的存储类。如果您不选择此选项,已复制对象的存储类将与原始对象的类相同。

    • 要将副本对象的对象所有权更改为目标存储桶拥有者,请选择 Change object ownership to destination owner (将对象所有权更改为目标存储桶拥有者)。利用此选项,您可以让复制数据的对象所有权独立于源。如果系统要求,请键入目标存储桶的账户 ID。

      选择此选项时,无论谁拥有此源存储桶或源对象,都会向拥有目标存储桶的 AWS 账户授予对副本对象的完整权限。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的 CRR:更改副本拥有者

    
            输入 AWS KMS 密钥以加密目标存储桶中的对象。

    选择 Next

  7. 设置一个 AWS Identity and Access Management (IAM) 角色,Amazon S3 可代入该角色以代表您执行对象的跨区域复制。

    要设置 IAM 角色,请在 Configure options (配置选项) 页面上的 Select role (选择角色) 下,执行下列操作之一:

    • 我们强烈建议您选择 Create new role (创建新角色),让 Amazon S3 为您创建一个新的 IAM 角色。当您保存该规则后,将为 IAM 角色生成一个与您选择的源和目标存储桶匹配的新策略。生成的角色的名称基于存储桶名称并使用以下命名约定:replication_role_for_source-bucket_to_destination-bucket

    • 您可以选择使用现有的 IAM 角色。在这种情况下,必须选择相应角色,以允许 Amazon S3 代表您将对象从源存储桶复制到目标存储桶。

    
            为您的复制选择 IAM 角色
  8. Configure options (配置选项) 页面上提供了存储桶策略,您可以复制该策略并将其添加到另一个账户中的目标存储桶。有关向 S3 存储桶添加存储桶策略的信息,请参阅如何添加 S3 存储桶策略?

    
            目标存储桶的存储桶策略示例
  9. 如果您选择复制使用 AWS KMS 加密的对象,则在 Configure options (配置选项) 页面上提供了 AWS KMS 密钥策略。您可以复制此策略,以添加到您正在使用的 AWS KMS 密钥客户主密钥 (CMK) 的密钥策略。该密钥策略向源存储桶拥有者授予使用该密钥的权限。有关更新密钥策略的信息,请参阅授予源存储桶拥有者使用 AWS KMS 密钥加密的权限

    
            目标存储桶 AWS KMS 密钥策略
  10. Review 页面上,检查您的复制规则。如果它看起来正确,请选择 Save。否则,请选择 Previous 以在保存规则之前编辑规则。

  11. 当您保存规则之后,您可在 Replication 页面上编辑、启用、禁用或删除您的规则。

    
            显示规则详细信息和选项的“Replication”(复制) 页面
  12. 按照“Replication”(复制) 页面上警告消息 The CRR rule is saved, but additional settings are required in the destination account (已保存 CRR 规则,但需要在目标账户进行其他设置) 下的说明操作。 下方提供的说明,从当前使用的 AWS 账户注销,然后登录到目标账户。

    重要

    除非您登录到目标账户并完成以下步骤,否则跨区域复制会失败。

  13. 在登录到目标账户后,选择 Management (管理) 选项卡,选择 Replication (复制),然后从 Actions (操作) 菜单中选择 Receive objects (接收对象)

  14. 可从“Receive objects”页中执行以下操作:

    • 对目标存储桶启用版本控制功能。

    • 将 Amazon S3 提供的存储桶策略应用到目标存储桶。

    • 复制 AWS KMS 密钥策略,您在更新用于加密目标存储桶中的副本对象的 AWS KMS CMK 密钥时需要该策略。有关更新密钥策略的信息,请参阅授予源存储桶拥有者使用 AWS KMS 密钥加密的权限

    
            “Receive objects”(接收对象) 页

授予源存储桶拥有者使用 AWS KMS 密钥加密的权限

您必须向源存储桶拥有者的账户授予权限,以便通过密钥策略使用您的 AWS KMS 密钥进行加密。以下过程介绍如何使用 AWS Identity and Access Management (IAM) 控制台修改 AWS KMS 客户主密钥 (CMK) 的密钥策略,该主密钥用于加密目标存储桶中的副本对象。

授予使用您的 AWS KMS 密钥进行加密的权限

  1. 使用拥有该 AWS KMS CMK 的 AWS 账户登录 AWS 管理控制台。从 https://console.amazonaws.cn/iam/ 打开 IAM 控制台。

  2. 在左侧导航窗格中,选择 Encryption keys

  3. 对于 Region (区域),选择适当的 AWS 区域。请勿使用导航栏中的区域选择器 (右上角)。

  4. 选择您在加密时要使用的 CMK 的别名。

  5. 在页面的 Key Policy 部分中,选择 Switch to policy view

  6. 使用 Key Policy (密钥策略) 编辑器,将 Amazon S3 提供的密钥策略插入到现有密钥策略中,然后选择 Save Changes (保存更改)。您可能希望将策略添加到现有策略的末尾。

有关创建和编辑 AWS KMS CMK 的更多信息,请参阅 AWS Key Management Service Developer Guide 中的入门

更多信息