首页 > 解决方案 > 如何将文件从一个 AWS 账户复制到另一个 AWS 账户

问题描述

我需要将文件从客户端 S3 存储桶移动到我们的 S3 存储桶。我尝试了几件事:

  1. 使用 S3 浏览器复制和粘贴
  2. AWS CLI sync/cp 但我卡住了如何传递源/目标位置的访问密钥和访问 ID

请你给我一些指点。提前致谢。

标签: amazon-web-servicesamazon-s3aws-cli

解决方案


您有 2 个选项:

拉取文件

在源中设置存储桶策略,授予目标账户中用户/角色的读取权限。

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "Example",
         "Effect": "Allow",
         "Action": [
            "s3:GetObject",
            "s3:ListBucket"
         ],
         "Principal": {
            "AWS": "arn:aws:iam::DEST_ACCOUNT:user/DestinationAccountUserName"
        },
         "Resource": [
            "arn:aws:s3:::source-bucket",
            "arn:aws:s3:::source-bucket/*"
         ]
      }
   ]
}

然后,您可以aws s3 sync s3://source-bucket s3://dest-bucket与目标帐户中的用户一起运行。

推送文件

在您的目标中设置存储桶策略,授予对源账户中用户/角色的写入权限。

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "Example",
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl"
         ],
         "Principal": {
            "AWS": "arn:aws:iam::SOURCE_ACCOUNT:user/SourceAccountUserName"
        },
         "Resource": [
            "arn:aws:s3:::dest-bucket"
         ],
         "Condition": {
            "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control"
            }
         }
      }
   ]
}

然后您可以aws s3 sync --acl bucket-owner-full-control s3://source-bucket s3://dest-bucket使用源帐户中的用户运行。重要如果您不设置 ACL,目标账户中的存储桶所有者将无法访问对象,这就是我们在"Condition".

这是关于此的 AWS 帖子:https ://aws.amazon.com/es/premiumsupport/knowledge-center/cross-account-access-s3/


推荐阅读