2

我正在尝试按存储桶设置Only PutObject策略,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt####",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

但是,当我尝试上传文件时,我认为AWS SDK我收到了来自 AWS 的 403 响应。我绝对确定使用附加了此策略的 IAM 用户的正确访问密钥。

任何人都知道为什么 AWS3 不应该抱怨这项政策吗?

编辑:

经过数小时的试验,我遇到了一个奇怪的行为,我想解释一下。

如果我添加s3:ListBucket到上述政策中,它就可以正常工作。没有它,它会返回 403。当我不想拥有它时,为什么亚马逊强迫我执行ListBucket操作?

谢谢

4

1 回答 1

-1

解决此问题的最佳方法是为您的策略提供以下操作和资源:

"Action": [
    "s3:*"
],
"Resource": [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*"
]

这将确认您使用的是正确的访问密钥。如果它通过,您很可能使用了未经授权的操作(例如 s3:ListBucket)。您可以使用 CloudTrail 查找正在调用哪些未经授权的操作。

于 2015-07-29T18:11:47.177 回答