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

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

跨区域复制是跨不同 AWS 区域中的存储桶自动、异步地复制对象。跨区域复制仅将新创建的对象、对象更新和对象删除从源存储桶复制到不同 AWS 区域中的目标存储桶。

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

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

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

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

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

您使用 Amazon S3 控制台向源存储桶添加复制规则。复制规则定义要复制的源存储桶对象和存储已复制对象的目标存储桶。您可以创建规则来复制存储桶中的所有对象或具有特定键名称前缀的部分对象 (即,其名称以通用字符串开头的对象)。目标存储桶与源存储桶可以位于同一 AWS 账户中,也可以位于不同的账户中。目标存储桶与源存储桶必须始终位于不同的区域。

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

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

向 S3 存储桶添加跨区域复制规则

向 S3 存储桶添加跨区域复制规则

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

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

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

     “Replication”和“Add rule”处于选中状态的“Management”选项卡
  4. 要复制整个存储桶,请在 Replication rule 对话框中的 Source 下,选择 All contents in bucket-name。要复制具有相同前缀的所有对象 (例如,名称以字符串 pictures 开头的所有对象),请选择 Prefix in this bucket。例如,文件夹中名为 pictures 的所有对象。如果您输入属于文件夹名称的前缀,您必须使用 / (正斜杠) 作为最后一个字符 (例如,pictures/)。

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

     复制规则向导步骤 1:配置源。
  5. 要复制源存储桶中使用 AWS KMS 加密的对象,请在 Replication criteria 下方,选择 Replicate objects encrypted with 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. 要从您当前使用的账户中选择一个目标存储桶,请在 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. 如果您希望将数据复制到目标存储桶中的特定存储类,请在 Destination 页面上的 Options 下方,选择 Change the storage class for the replicated object(s)。然后选择要用于目标存储桶中的已复制对象的存储类。如果您不选择此选项,已复制对象的存储类将与原始对象的类相同。

     “Change the storage class for replicated objects”处于选中状态的“Destination”选项

    选择 Next

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

    要设置 IAM 角色,请在 Permissions 页面上的 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 角色

    选择 Next

  10. Review 页面上,检查您的复制规则。如果它看起来正确,请选择 Save。否则,请选择 Previous 以在保存规则之前编辑规则。

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

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

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

此部分介绍当目标存储桶与源存储桶位于不同的 AWS 账户中时,如何配置跨区域复制规则。

当目标存储桶与源存储桶位于不同的 AWS 账户中时,添加跨区域复制规则

  1. 如果您之前从未创建过跨区域复制规则,请从向 S3 存储桶添加跨区域复制规则开始。

    Replication rule 向导的 Destination 页面中,在 Destination bucket 下方,选择 Buckets in another account。然后,键入另一个 AWS 账户的目标存储桶和账户 ID。选择 Save (保存)

     选择另一个 AWS 账户中的目标存储桶

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

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

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

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

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

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

     输入 AWS KMS 密钥以加密目标存储桶中的对象。
  5. 设置一个 AWS Identity and Access Management (IAM) 角色,Amazon S3 可代入该角色以代表您执行对象的跨区域复制。

    要设置 IAM 角色,请在 Permissions 页面上的 Select role 下,执行下列操作之一:

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

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

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

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

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

     已启用复制规则向导 Review 页面
  9. 当您保存规则之后,您可在 Replication 页面上编辑、启用、禁用或删除您的规则。

     显示规则详细信息和选项的“Replication”页面
  10. 按照“Replication”页面上警告消息 The CRR rule is saved, but additional settings are required in the destination account. 下方提供的说明,从当前使用的 AWS 账户注销,然后登录到目标账户。

    重要

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

  11. 在登录到目标账户后,选择 Management 选项卡,选择 Replication,然后从 More 菜单中选择 Receive objects

     显示规则详细信息和选项的“Replication”页面
  12. 可从“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 管理控制台。通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/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 中的入门

更多信息