我试图让程序化的IAM用户访问单个存储桶。
我设置了以下政策并将其附加给用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mybucket"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::mybucket/*"
]
}
]
}
尝试以编程方式上传文件,我得到了403。
我从这里得到了这个政策:
Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket
我通过添加AWS托管策略AmazonS3FullAccess验证了其他所有功能,之后我的上传成功了。但我宁愿不给这个用户完全访问权限。
此用户没有附加其他政策。
答案 0 :(得分:1)
您的保单没有任何问题。确保在IAM策略中使用正确的存储桶名称并将策略添加到用户。
您可以使用IAM Policy Simulator进行测试。也许你应该考虑政策生效的时间,但它“几乎立即”。请参阅this answer。
答案 1 :(得分:0)
您可以尝试使用此政策来完全访问特定广告资源:
{
"Version": "2012-10-17",
"Statement": [{
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::<BUCKETNAME>/*"
]
},
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
}
]
}
由于您提供的是Put
,Get
,Delete
,因此您也可以提供对特定广告资源的完全访问权限。