【问题标题】:"An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied" when using batch jobs使用批处理作业时,“调用 ListObjectsV2 操作时发生错误 (AccessDenied):访问被拒绝”
【发布时间】:2021-08-08 13:14:17
【问题描述】:
  • 我有一个带有“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/*"
            ]
        }
    ]
}
  • 授予对存储桶的公共访问权限

【问题讨论】:

  • 如果您使用 IAM 角色,则不需要存储桶策略。 (此外,在bucketname 之前,该策略中有一个小错字,但我认为这是由于复制和粘贴错误造成的。)似乎尚未为您的 ECS 任务分配角色:IAM Roles for Tasks - Amazon Elastic Container Service跨度>
  • @JohnRotenstein 谢谢你的回答!它终于开始工作了。我将 S3 访问策略附加到我当前的工作角色,现在它执行得很好。再次感谢:)

标签: amazon-web-services amazon-s3 aws-batch aws-permissions


【解决方案1】:

引用@JohnRotenstein 的回复,因为我无法将其标记为答案。

“如果您使用 IAM 角色,则不需要存储桶策略。(此外,该策略中有一个小错字,在存储桶名称之前,但我认为这是由于复制和粘贴错误造成的。)它会似乎没有为您的 ECS 任务分配角色:IAM Roles for Tasks - Amazon Elastic Container Service"

解决方案:我必须将 S3 访问策略附加到我当前的工作角色。

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2018-07-12
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2020-04-02
    相关资源
    最近更新 更多