Root 用户被拒绝从 s3 存储桶下载

Root user is denied downloading from s3 bucket

使用 s3cmd 配置我的根权限(访问密钥和密钥)后,每当我尝试使用 syncget 从存储桶下载内容时,我都会收到此消息我的根帐户出现奇怪的权限错误:

WARNING: Remote file  S3Error: 403 (Forbidden):

所有者是我使用 IAM 控制台创建的另一个用户,但我认为根用户应始终获得完全且不受限制的访问权限是否正确? 同样使用 aws-cli 我得到一个未知错误

A client error (Unknown) occurred when calling the GetObject operation: Unknown

我还认为我必须添加一个存储桶策略以允许 root 访问(听起来很奇怪),作为我使用此策略添加匿名访问的第一步

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::myBucket/*"
            ]
        }
    ]
}

但是还是和上面一样报错。 bucket的拥有者也是root用户(尝试访问的就是owner)。我在这里理解错了什么?如何恢复 root 用户对我自己的 IAM 用户创建的存储桶的访问权限?

最好重新检查存储状态,以及 S3 是否处于生命周期中,这样在这种情况下它就可以转移到 Glacier。在这里,我尝试使用 s3cmd 命令访问 Glacier 对象,但我收到了无信息且不相关的权限错误。最好将此添加为 s3cmd 未来版本的增强功能,以获得更好的 warning/error 消息。

要使任何 S3 读取权限生效,您不仅需要允许这些对象,还需要允许存储桶上的 ListBucketListAllMyBucketsGetBucketLocation,我的合并版:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": "s3:ListAllMyBuckets",
        "Resource": "arn:aws:s3:::*"
    },
    {
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "s3:Get*",
            "s3:List*"
        ],
        "Resource": [
            "arn:aws:s3:::myBucket/*",
            "arn:aws:s3:::myBucket"
        ]
    }
]
}

AWS IAM Documentation

查看更多示例