如何在启用了acl的s3存储桶上运行ls



我已经创建了一个IAM角色并将其附加到一个实例,希望任何登录到该实例的人都能够在启用ACL的s3存储桶中上传、下载和列出文件。mv和cp可以工作,但使用aws s3 ls时,我收到一个错误:调用ListBuckets操作时发生客户端错误(AccessDenied(:Access Denied我猜我使用ls命令的方式有问题(因为我们现在启用了ACL(。我的IAM政策如下,有人能解释一下吗?谢谢

{ 
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}

ListBucket权限需要在实际的bucket本身上指定,而不是在其中的项上指定。

您需要在IAM策略中创建两个单独的Statements:一个应用于存储桶本身(s3:ListBucket(,另一个仅应用于存储盒内的项目(s3:*(。

按照以下方式构建IAM政策:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::awsexamplebucket1"],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::awsexamplebucket1/*"],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}

有关相关示例,请参阅AWS文档中的本页。

最新更新