首页 > 解决方案 > 如何从 us-east-1 帐户访问在 us-west-2 区域创建的 S3 存储桶?

问题描述

我在 us-east-1 区域有账户 A,具有 IAM 角色 rt-profileRole 和我的应用程序设置。账户 B 在 us-west-1 和 us-west-2 中创建了 S3 存储桶。

我正在尝试使用具有角色 rtprofile 的 aws cli 列出对象。两个存储桶都具有与以下资源类似的存储桶策略,该资源具有正确的存储桶 arn 策略附加到的存储桶。

问题是我可以使用本地系统中的 aws s3 ls 从 us-west-1 创建的存储桶中列出对象。但是当我尝试对 us-west-2 中创建的存储桶进行相同 操作时出现错误调用 ListObjectsV2 操作时发生错误 (AccessDenied):访问被拒绝

我厌倦了多个存储桶并得出结论,使用帐户 A 角色

  1. 我可以访问在 us-east-1 中创建的账户 A 的存储桶
  2. 我可以访问在 us-west-1 中创建的账户 B 的存储桶
  3. 我无法访问在 us-west-2 中创建的账户 B 的存储桶。

请帮助我了解这里的 west-2 区域有什么问题。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::AccountA:role/rt-profileRole"
                ]
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucket-name/*",
                "arn:aws:s3:::bucket-name"
            ]
        }
    ]
}

标签: amazon-web-servicesamazon-s3amazon-iam

解决方案


将存储桶策略添加到存储桶后,您还必须确保该角色在其 IAM 策略中具有特权。

此外,如果您在 AWS 组织中,请确保账户 A 上没有阻止特定区域内操作的 SCP。

关于存储桶策略,您应该将其范围缩小到您希望存储桶在您确认它有效后使用的权限(目前它对存储桶的每个 S3 操作,包括删除)。


推荐阅读