【问题标题】:Access denied to S3 bucket from ec2 docker container从 ec2 docker 容器拒绝访问 S3 存储桶
【发布时间】:2019-09-21 09:25:39
【问题描述】:

我已经启动了一个连接到 s3 存储桶所需的 EC2 实例。 我创建了 IAM 角色并将其链接到 EC2 实例。从 EC2 awscli 我可以列出文件,但是我在该 EC2 中部署了一个容器,当尝试列出文件时,我收到错误 -

An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

IAM-角色

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket/*",
            ]
        }
    ]
}

有人可以建议。为什么我可以从 ec2 实例访问 s3,但不能从在同一个 EC2 实例上运行的容器访问。

【问题讨论】:

  • 我的问题略有不同。针对给定问题给出的解决方案是创建 IAM 角色并将其附加到 EC2 实例,我已经这样做并进行了测试。 s3 列表在 EC2 上运行。但不是来自在其上运行的容器。

标签: amazon-web-services docker amazon-ec2 amazon-iam


【解决方案1】:

ListBucket 调用在存储桶级别应用,因此您需要将存储桶作为资源添加到您的 IAM 策略中(如前所述,您只是允许访问存储桶的文件):

"Resource": [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*"
]

请参阅this,了解有关每个权限所需的资源描述的更多信息。

您能够从 EC2 实例上运行的 shell 获取存储桶列表这一事实向我表明您配置了另一个用户。查找$HOME/.aws 中的文件和以AWS 开头的环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 2017-07-04
    • 2019-02-03
    • 2016-03-07
    • 2018-01-10
    • 1970-01-01
    • 2021-03-28
    • 2017-02-12
    相关资源
    最近更新 更多