我为我的任务设置了具有以下权限的IAM角色,但我得到访问被拒绝尝试访问存储桶。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket/Templates/*",
"arn:aws:s3:::bucket/*",
"arn:aws:s3:::anotherBucket/*"
]
}
]
}
容器实例具有标准AmazonEC2ContainerServiceforEC2Role
策略的角色。
我似乎能够读取和写入bucket / like bucket / 00001下的文件夹,但我无法从存储桶/模板中读取。
我已经重复部署了权限和任务(使用terraform),但没有任何变化。我已添加日志记录到应用程序,以确保它使用正确的存储桶和路径/键。
我很难过。任何人都知道我可能错过了什么?
由于
PS:刚刚发生,我无法访问的存储桶中的文件使用脚本复制到那里。这是使用除任务正在使用的信用证之外的凭证来完成的。
aws s3 cp ..\Api\somefiles\000000000001\ s3://bucket/000000000001 --recursive --profile p
aws s3 cp ..\Api\somefiles\Templates\000000000001\ s3://bucket/Templates/000000000001 --recursive --profile p
我在cp命令上使用了-acl bucket-owner-full-control但我删除了它以查看是否有帮助 - 它没有。也许我需要别的东西?
答案 0 :(得分:2)
它现在可以工作,因为您将资源更改为匹配“ ”。 尝试将存储桶本身与/ 模式一起添加为资源:
"Version": "2012-10-17",
"Statement": [
{
"Sid": "sid1",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:HeadBucket"
],
"Resource": "*"
},
{
"Sid": "sid2",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*",
"arn:aws:s3:::anotherBucket"
"arn:aws:s3:::anotherBucket/*",
]
}
]
答案 1 :(得分:0)
解决。找到前雇主的旧样本:)我明确需要List *的权限,与其他权限分开。我还需要定义sids。
"Version": "2012-10-17",
"Statement": [
{
"Sid": "sid1",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:HeadBucket"
],
"Resource": "*"
},
{
"Sid": "sid2",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}