我得到:
在调用ListObjects操作时发生错误(AccessDenied): AccessDenied
当我试图从S3存储桶中获取文件夹时。
使用该命令:
aws s3 cp s3://bucket-name/data/all-data/ . --recursive
桶的IAM权限如下所示:
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname/*"
]
}
] }
我需要改变什么才能成功复制和ls ?
我有这个问题
我的要求,我想让用户写入特定的路径
{
"Sid": "raspiiotallowspecificBucket",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucketname>/scripts",
"arn:aws:s3:::<bucketname>/scripts/*"
]
},
这个改变解决了问题
{
"Sid": "raspiiotallowspecificBucket",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucketname>",
"arn:aws:s3:::<bucketname>/*"
]
},
我得到了相同的错误时使用策略如下,虽然我有“s3:ListBucket”s3:ListObjects操作。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource": [
"arn:aws:s3:::<bucketname>/*",
"arn:aws:s3:::*-bucket/*"
],
"Effect": "Allow"
}
]
}
然后我通过添加一行来修复它
“攻击:aws: s3::: bucketname”
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource": [
"arn:aws:s3:::<bucketname>",
"arn:aws:s3:::<bucketname>/*",
"arn:aws:s3:::*-bucket/*"
],
"Effect": "Allow"
}
]
}
您必须通过“arn:aws:s3:::bucketname”或“arn:aws:3:: bucketname*”为桶指定Resource。后者是首选,因为它也允许对桶的对象进行操作。注意这里没有斜杠!
列出对象是Bucket上的一个操作。因此,需要执行“s3:ListBucket”操作。
向Bucket中添加对象是object上的操作。因此,需要动作“s3:PutObject”。
当然,您可能希望根据需要添加其他操作。
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucketname*"
]
}
]
}