我想限制用户在特定区域中创建Amazon S3存储桶。我写了一个类似下面的政策并附在用户身上。但它拒绝用户创建任何存储桶。
请帮忙。编写其他语句以查看是否已创建存储桶。不幸的是,我们无法限制用户列出存储桶。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RegionSpecificS3BucketCreation",
"Effect": "Allow",
"Action": "s3:CreateBucket",
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringLike": {
"s3:LocationConstraint": "us-east-1"
}
}
},
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:HeadBucket"
],
"Resource": "*"
}
]
}
答案 0 :(得分:1)
us-east-1
是一个特例。这是原始的S3区域,并且对于该区域中的向后兼容性桶,实际上没有声明位置约束。它们仍然受限于us-east-1(数据保留在该区域中),但是您通过不在API级别指定位置约束来在us-east-1中创建存储桶。
我怀疑该特定区域的正确条件测试是这样的:
"Condition": {
"StringLikeIfExists": {
"s3:LocationConstraint": ""
}
}
也就是说,如果字符串完全存在,则它必须是空字符串。
对于所有其他地区,您正在做的事情应该可以正常工作。