我如何“aws s3 同步”位于不同账户的两个存储桶

我如何“aws s3 同步”位于不同账户的两个存储桶

我正在尝试在两个帐户之间的 awscli 上使用“aws s3 sync”。

帐户 A,我拥有。帐户 B,由第三方拥有。

账户 B 通过 role:assumeDevOps 假设授予了账户 A 上的 user:jon 对存储桶的权限。

Jon 假设 AssumeDevOps 可以访问帐户 B 上的存储桶。但现在我必须同步到帐户 A 上的存储桶。

我收到拒绝访问的提示。可能是因为 Jon 所担任的角色对我帐户上的存储桶没有权限。

我该怎么做呢?

有关于这种具体情况的文献吗?

答案1

基本上,您需要创建一个策略来允许访问您这边的 S3 存储桶和一个角色,并将该策略附加到该角色。

然后,帐户 B 中的用户需要承担您创建的允许访问您的存储桶的角色。

我相信这是您正在寻找的文章(更为详细的文章): https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

这是一篇更具体的文章: https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/

答案2

执行命令所需的凭据aws s3 sync需要:

  • 源存储桶的读取权限,
  • 目标存储桶的写入权限

由于您正在承担源账户的角色(该账户已具有源存储桶的读取权限),因此您需要授予该角色写入目标存储桶的权限在您的帐户中。

这可以通过目标存储桶上的存储桶策略来完成,其内容如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::destination-bucket/*",
                "arn:aws:s3:::destination-bucket"
            ],
            "Principal": {"AWS":"arn:aws:iam::bbbbbbbbbbbb:role/assumeDevOps"}
        }
    ]
}

相关内容