我正在尝试配置一个Amazon IAM用户,使其可以执行仅限于将文件上传到特定S3存储桶文件夹的策略。 当策略编写如下时,我可以成功上传图像:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Put*"
],
"Resource": "*"
}
]
}
以下是我的上传函数(使用浏览器端 JavaScript AWS-SDK 的 Coffeescript 编写):
s3.putObject data, (err, data) =>
if err
console.log err
console.log 'Error uploading data: ', data
else
console.log 'succesfully uploaded the image!'
然而,我希望将权限范围限制为仅允许putObject,并且仅在特定目录中。我认为这个策略会起作用,但它会抛出403错误:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my_bucket/example_directory"
}
]
}
我的策略中是否有语法错误,或者我做错了其他事情?我还不熟悉编写IAM策略。
更新
通过在IAM模拟器中让以下代码工作,我已经取得了一些进展,但是很遗憾,尽管它说应该允许putObject,但在实际上传时仍会抛出403错误。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject*"
],
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"s3:PutObjectAcl*",
"s3:PutObjectVersionAcl*"
],
"Resource": "*"
}
]
}
"Principal": "*",
пЉИжИЦжВ®жГ≥и¶БйЩРеИґзЪДIAMеЄРжИЈпЉЙпЉМзДґеРОйЗНиѓХгАВ - Frederic Henri