"An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied" 使用批处理作业时
"An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied" when using batch jobs
- 我有一个 'ecsInstanceRole' 的计算环境。它包含策略 'AmazonS3FullAccess' 和 'AmazonEC2ContainerServiceforEC2Role'
- 由于我使用的是 AmazonS3FullAccess 策略,因此我假设批处理作业具有列出、复制、放置等权限。
-我使用的图像是一个自定义 docker 图像,它有一个使用“aws s3 ls
” 的启动脚本
- 当我在 EC2 实例上启动此映像时,它运行良好并列出了存储桶的内容
- 当我执行与批处理作业相同的操作时,我收到上面看到的访问被拒绝错误。
我不明白这是怎么回事。
到目前为止我尝试过的事情:
- 存储桶策略为
.
{
"Version": "2012-10-17",
"Id": "Policy1546414123454",
"Statement": [
{
"Sid": "Stmt1546414471931",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account Id>:root"
},
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::"bucketname",
"arn:aws:s3:::bucketname/*"
]
}
]
}
- 已授予 public 存储桶访问权限
引用@JohnRotenstein 的回复,因为我无法将其标记为答案。
“如果您使用的是 IAM 角色,则不需要存储桶策略。(此外,该策略中有一个小错字,在 bucketname 之前,但我认为这是由于复制和粘贴错误造成的。)似乎尚未为您的 ECS 任务分配角色:IAM Roles for Tasks - Amazon Elastic Container Service"
解决方案:我必须将 S3 访问策略附加到我当前的工作角色。
- 我有一个 'ecsInstanceRole' 的计算环境。它包含策略 'AmazonS3FullAccess' 和 'AmazonEC2ContainerServiceforEC2Role'
- 由于我使用的是 AmazonS3FullAccess 策略,因此我假设批处理作业具有列出、复制、放置等权限。
-我使用的图像是一个自定义 docker 图像,它有一个使用“aws s3 ls
” 的启动脚本
- 当我在 EC2 实例上启动此映像时,它运行良好并列出了存储桶的内容
- 当我执行与批处理作业相同的操作时,我收到上面看到的访问被拒绝错误。
我不明白这是怎么回事。
到目前为止我尝试过的事情:
- 存储桶策略为
.
{
"Version": "2012-10-17",
"Id": "Policy1546414123454",
"Statement": [
{
"Sid": "Stmt1546414471931",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account Id>:root"
},
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::"bucketname",
"arn:aws:s3:::bucketname/*"
]
}
]
}
- 已授予 public 存储桶访问权限
引用@JohnRotenstein 的回复,因为我无法将其标记为答案。
“如果您使用的是 IAM 角色,则不需要存储桶策略。(此外,该策略中有一个小错字,在 bucketname 之前,但我认为这是由于复制和粘贴错误造成的。)似乎尚未为您的 ECS 任务分配角色:IAM Roles for Tasks - Amazon Elastic Container Service"
解决方案:我必须将 S3 访问策略附加到我当前的工作角色。