Satya 向您演示如何
将 S3 对象
转移到其他 AWS 账户

Satya_account-transfer-s3-new

我想将 Amazon S3 对象的所有权从一个 Amazon Web Services (AWS) 账户转移到其他 AWS 账户。我该如何操作?

AWS Support 无权复制 Amazon S3 对象或操作 AWS 账户中的任何配置选项。您无法将 AWS 账户从 Amazon.com 账户分离出来,也无法在 AWS 账户之间转移资源。但通过应用基于资源的策略并使用 IAM 用户(或组)策略委派跨 AWS 账户访问这些资源的权限,可以将 Amazon S3 资源手动迁移到新的 AWS 账户。

您可以利用 S3 COPY 操作将 Amazon S3 对象从一个 AWS 账户复制到另一个。您必须使用 Amazon S3 访问控制列表 (ACL)存储桶策略授予目标 AWS 账户对源 AWS 账户的资源的访问权限。例如,以下步骤说明了源 AWS 账户如何创建存储桶策略,以便为其他 AWS 账户提供访问一个或多个 Amazon S3 资源的权限,并授予该 AWS 账户从源账户复制对象的权限。

注意:在源 AWS 账户中创建的以下存储桶策略会授予目标 AWS 账户对每个指定 S3 资源的 ListBucket 和 GetObject 权限。在生产环境中,指定遵循最低特权访问原则的 Action 参数被视为最佳实践。设置 Action 参数后,在“资源”部分添加目标 AWS 账户应有权访问的所有资源。确保用逗号分隔每个资源条目。

首先,获取目标账户的 12 位数字账户 ID。下面提供了一种查找账号的方法:

  1. 登录 AWS 管理控制台,以查看目标 AWS 账户。
  2. 在导航栏中,单击支持,然后单击支持中心。账号(如 222222222222)显示在“支持中心”的右上角。

在源账户中,将以下策略附加到要复制的存储桶中。有关详细说明,请参阅设置存储桶和对象访问权限

#Bucket policy set up in the source AWS account.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {"AWS": "222222222222"},
            "Action": ["s3:ListBucket","s3:GetObject"],
            "Resource": [
                "arn:aws:s3:::sourcebucket/*",
                "arn:aws:s3:::sourcebucket"
            ]
        }
    ]
}

将策略附加到目标 AWS 账户中的用户或组,以委派对源 AWS 账户中的存储桶的访问权限。如果将策略附加到某个组,请确保 IAM 用户是该组的成员。

#New AWS account IAM user policy set up on destination AWS account.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::sourcebucket",
                "arn:aws:s3:::sourcebucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::destinationbucket",
                "arn:aws:s3:::destinationbucket/*"
            ]
        }
    ]
}

完成上述步骤后,“目标”账户便可使用 AWS 命令行界面 (CLI) 命令 cpsync 复制对象。例如,以下 aws s3 sync 命令可用于将源 AWS 账户中存储桶的内容复制到目标 AWS 账户中的存储桶:

注意:如果以下命令成功执行,则认为已为目标 AWS 账户中的用户正确配置 AWS CLI,并且源存储桶和目标存储桶位于同一区域中(有一个用于指定不同区域的命令行选项)。有关配置 AWS CLI 的更多信息,请参阅配置 AWS CLI。此外,目标 AWS 账户中的用户必须具备将文件复制到 s3://destinationbucket 的相应权限。

aws s3 sync s3://sourcebucket s3://destinationbucket

有关委托访问另一账户中的 S3 存储桶的更多信息,请参阅示例:使用基于资源的策略委托访问另一个账户的 Amazon S3 存储桶

有关使用 IAM 角色委派访问其他 AWS 账户中的资源的更多信息,请参阅教程:使用 IAM 角色委派跨 AWS 账户的访问权限

有关介绍存储桶拥有者如何授予跨账户存储桶权限的详细演练,请参阅示例 2:存储桶拥有者授予跨账户存储桶权限


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助?请访问 AWS 支持中心

发布时间:2015 年 2 月 26 日

更新时间:2017 年 8 月 7 日