我在s3存储桶(my-bucket
)中有一个文件夹结构,如下所示:
/folder1/
/folder2/subfolder/
/folder3/subfolder/subsubfolder/
file.ext
file2.ext
etc...
我希望能够在存储桶的根目录和任何子文件夹(以及子文件夹的子文件夹)中列出,放置和获取所有文件夹和对象。
以下是我对需要这些权限的用户组的当前政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::my-bucket"
]
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
},
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:List*"
],
"Resource": "arn:aws:s3:::*"
}
]
}
使用此策略我只能获取并将对象放在存储桶的根目录中。但我也希望将对象放入存储桶中的文件夹中。这些文件夹名称是动态的,因此我不能在策略中使用它们。我该怎么做呢?我知道使用S3完全访问策略它可以工作但不是我上面的例子。尝试此操作时,我只是继续获取Access Denied错误。
任何帮助都将不胜感激。
答案 0 :(得分:0)
完整的政策看起来像这样。这适用于AWS S3控制台。
请注意,我没有添加s3:DeleteObject
。如果您需要,请不要忘记在s3:PutObject
和s3:GetObject
之外添加它。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}