我正在尝试按如下方式设置 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 动作时?
由于
答案 0 :(得分:-1)
解决此问题的最佳方法是为您的政策提供以下操作和资源:
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
这将确认您使用的是正确的访问密钥。如果它通过,你很可能使用未经授权的操作(例如s3:ListBucket)。您可以使用CloudTrail查找正在调用的未授权操作。