针对不同账户中的存储桶配置复制 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

针对不同账户中的存储桶配置复制

实时复制是跨相同或不同 Amazon Web Services 区域中的存储桶自动、异步复制对象。实时复制会将源存储桶中新创建的对象和对象更新复制到一个或多个目标存储桶。有关更多信息,请参阅 在区域内和跨区域复制对象

配置复制时,需要向源存储桶添加复制规则。复制规则定义要复制的源存储桶对象和存储已复制对象的目标存储桶。您可以创建一条规则,以复制存储桶中的所有对象或具有特定键名前缀和/或一个或多个对象标签的对象子集。目标存储桶与源存储桶可以位于同一 Amazon Web Services 账户 中,也可以位于不同的账户中。

如果您指定要删除的对象版本 ID,Amazon S3 会在源存储桶中删除该对象版本。但不会将删除操作复制到目标存储桶中。换句话说,它不会从目标存储桶中删除同一对象版本。这会防止恶意删除数据。

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

当源存储桶和目标存储桶由不同 Amazon Web Services 账户拥有时设置实时复制的过程,与这两个存储桶由相同账户拥有时设置复制的过程类似。但是,当您在跨账户场景中配置复制时,会有一些区别:

  • 目标存储桶拥有者必须在目标存储桶策略中,向源存储桶拥有者授予复制对象的权限。

  • 如果在跨账户场景中,您要复制的对象使用了具有 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)进行加密,则 KMS 密钥的拥有者必须向源存储桶拥有者授予使用 KMS 密钥的权限。有关更多信息,请参阅 为跨账户方案授予其他权限

  • 默认情况下,复制的对象归源存储桶拥有者所有。在跨账户场景中,您可能希望配置复制,来将复制对象的所有权更改为目标存储桶的拥有者。有关更多信息,请参阅 更改副本拥有者

当源存储桶和目标存储桶由不同 Amazon Web Services 账户 拥有时配置复制
  1. 在此示例中,您将在两个不同的 Amazon Web Services 账户中创建源存储桶和目标存储桶。您必须为 Amazon CLI 设置两个凭证配置文件。此示例使用 acctAacctB 作为这些配置文件名称。有关设置凭证配置文件和使用命名配置文件的信息,请参阅《Amazon Command Line Interface 用户指南》中的 Configuration and credential file settings

  2. 按照 针对同一账户中的存储桶配置复制 中的分步说明操作,进行以下更改:

    • 对于与源存储桶活动相关的所有 Amazon CLI 命令(例如,创建源存储桶、启用版本控制和创建 IAM 角色),请使用 acctA 配置文件。使用 acctB 配置文件创建目标存储桶。

    • 确保 IAM 角色的权限策略指定您为此示例创建的源存储桶和目标存储桶。

  3. 在控制台中,在目标存储存储桶上添加以下存储桶策略,以允许源存储存储桶的拥有者复制对象。有关说明,请参阅 使用 Amazon S3 控制台添加存储桶策略。请务必编辑该策略,即提供源存储桶拥有者的 Amazon Web Services 账户 ID、IAM 角色名称和目标存储桶名称。

    注意

    要使用以下示例,请将 user input placeholders 替换为您自己的信息。将 amzn-s3-demo-destination-bucket 替换为目标存储桶名称。将 IAM Amazon 资源名称(ARN)中的 source-bucket-account-ID:role/service-role/source-account-IAM-role 替换为您用于此复制配置的 IAM 角色。

    如果您手动创建了 IAM 服务角色,请将 IAM ARN 中的角色路径设置为 role/service-role/,如以下策略示例所示。有关更多信息,请参阅《IAM 用户指南》中的 IAM ARN

    { "Version":"2012-10-17", "Id":"", "Statement":[ { "Sid":"Set-permissions-for-objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::source-bucket-account-ID:role/service-role/source-account-IAM-role" }, "Action":["s3:ReplicateObject", "s3:ReplicateDelete"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Sid":"Set permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::source-bucket-account-ID:role/service-role/source-account-IAM-role" }, "Action":["s3:GetBucketVersioning", "s3:PutBucketVersioning"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket" } ] }
  4. (可选)如果您要复制的对象使用了 SSE-KMS 进行加密,则 KMS 密钥的拥有者必须向源存储桶拥有者授予使用 KMS 密钥的权限。有关更多信息,请参阅 为跨账户方案授予其他权限

  5. (可选)在复制中,默认情况下,源对象的拥有者拥有副本。当源存储桶和目标存储桶由不同的 Amazon Web Services 账户拥有时,您可以添加可选的配置设置,来将副本所有权更改为拥有目标存储桶的 Amazon Web Services 账户。这包括授予 ObjectOwnerOverrideToBucketOwner 权限。有关更多信息,请参阅 更改副本拥有者