Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

设置跨区域复制的权限

设置跨区域复制 (CRR) 时,您必须获取必要的权限,如下所示:

  • 创建一个 IAM 角色 — Amazon S3 需要代表您复制对象的权限。您通过创建一个 IAM 角色并在复制配置中指定该角色,授予这些权限。

  • 当源存储桶与目标存储桶不是由相同 AWS 账户拥有时,目标存储桶的拥有者必须向源存储桶拥有者授予存储副本的权限。

创建 IAM 角色

存储桶和对象是 Amazon S3 资源。默认情况下,只有资源所有者可以访问这些资源。 要读取源存储桶中的对象并将其复制到目标存储桶,Amazon S3 需要执行这些任务的权限。您通过创建一个 IAM 角色,然后在复制配置中指定该角色,授予这些权限。

此部分介绍信任策略及所需的最低权限策略。示例演练提供创建 IAM 角色的分步说明。有关更多信息,请参阅 跨区域复制 (CRR) 演练

  • 一个信任策略,您在其中将 Amazon S3 标识为可担任角色的服务委托人:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

    有关 IAM 角色的详细信息,请参阅 IAM 用户指南 中的 IAM 角色

  • 一个访问策略,您在其中向角色授予代表您执行复制任务的权限。当 Amazon S3 担任角色时,它将具有您在此策略中指定的权限。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws-cn:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:GetObjectRetention", "s3:GetObjectLegalHold" ], "Resource":[ "arn:aws-cn:s3:::source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws-cn:s3:::destination-bucket/*" } ] }

    访问策略授予以下操作的权限:

    • s3:GetReplicationConfigurations3:ListBucket 存储桶上这些操作的权限允许 Amazon S3 检索复制配置和列出存储桶内容(当前权限模型需要 s3:ListBucket 权限来访问删除标记)。

    • s3:GetObjectVersions3:GetObjectVersionAcl — 针对所有对象授予的这些操作的权限允许 Amazon S3 获取特定对象版本和对象关联的访问控制列表 (ACL)。

    • s3:ReplicateObjects3:ReplicateDelete目标 存储桶中对象上的这些操作的权限允许 Amazon S3 将对象或删除标记复制到目标存储桶。有关删除标记的信息,请参阅删除操作对 CRR 有何影响

      注意

      目标 存储桶上 s3:ReplicateObject 操作的权限还允许复制对象标签,因此您无需显式授予 s3:ReplicateTags 操作的权限。借助 s3:ReplicateObject 操作,如果您的源对象处于 Amazon S3 对象锁定管理模式,CRR 可以绕过它。有关管理模式的更多信息,请参阅 Amazon S3 对象锁定概览

    • s3:GetObjectVersionTagging 存储桶中对象上的此操作的权限允许 Amazon S3 读取复制的对象标签(请参阅对象标签)。如果 Amazon S3 没有这些权限,它将复制对象而不是对象标签。

    • s3:GetObjectRetentions3:GetObjectLegalHold— 源存储桶中对象上的这些操作的权限允许 Amazon S3 读取复制的保留信息和依法保留信息。有关保留和依法保留的更多信息,请参阅使用 Amazon S3 对象锁定以锁定对象

       

    有关 Amazon S3 操作的列表,请参见在策略中指定权限

    重要

    拥有 IAM 角色的 AWS 账户必须拥有其向 IAM 角色授予的操作的权限。

    例如,假定源存储桶包含由另一个 AWS 账户拥有的对象。对象的拥有者必须通过对象 ACL 向拥有 IAM 角色的 AWS 账户显式授予必要的权限。否则,Amazon S3 无法访问这些对象,因而这些对象的跨区域复制将失败。有关 ACL 权限的信息,请参阅访问控制列表 (ACL) 概述

    此处介绍的权限与最低复制配置相关。如果您选择添加可选复制配置,您将需要向 Amazon S3 授予其他权限。有关更多信息,请参阅 其他 CRR 配置

当源存储桶和目标存储桶由不同的 AWS 账户拥有时授予权限

当源存储桶和目标存储桶由不同的 AWS 账户拥有时,目标存储桶的拥有者还必须添加一个存储桶策略,以向源存储桶的拥有者授予执行复制操作的权限,如下所示。

{ "Version":"2008-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"1", "Effect":"Allow", "Principal":{ "AWS":"SourceBucket-AcctID" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::destinationbucket/*" }, { "Sid":"2", "Effect":"Allow", "Principal":{ "AWS":"SourceBucket-AcctID" }, "Action":"s3:List*", "Resource":"arn:aws:s3:::destinationbucket" } ] }

有关示例,请参阅示例 2:当源存储桶和目标存储桶由不同 AWS 账户拥有时配置 CRR

如果向源存储桶中的对象添加标签,请注意以下事项:

  • 如果源存储桶拥有者向 Amazon S3 授予 s3:GetObjectVersionTaggings3:ReplicateTags 操作的权限来复制对象标签(通过 IAM 角色),则 Amazon S3 将复制标签以及对象。有关 IAM 角色的信息,请参阅创建 IAM 角色

  • 如果目标存储桶的所有者不希望复制标签,则他们可以向目标存储桶策略添加以下语句来显式拒绝 s3:ReplicateTags 操作的权限。

    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:root" }, "Action":["s3:ReplicateTags"], "Resource":"arn:aws:s3:::destinationbucket/*" } ] ...

更改副本所有权

当源存储桶和目标存储桶由不同的 AWS 账户拥有时,您可以指示 Amazon S3 将副本的所有权更改为拥有目标存储桶的 AWS 账户。这称作拥有者覆盖 选项。有关更多信息,请参阅 CRR 附加配置:更改副本拥有者