Amazon web services 从ec2 docker容器访问S3 bucket被拒绝

Amazon web services 从ec2 docker容器访问S3 bucket被拒绝,amazon-web-services,docker,amazon-ec2,amazon-iam,Amazon Web Services,Docker,Amazon Ec2,Amazon Iam,我已经启动了一个EC2实例,它需要连接到s3 bucket。 我创建了IAM角色并将其链接到EC2实例。从EC2 awscli我可以列出文件,但是我在该EC2中部署了一个容器,当尝试列出文件时,我得到了错误- An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied IAM角色 { "Version": "2012-10-17", "Statement": [

我已经启动了一个EC2实例,它需要连接到s3 bucket。 我创建了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实例上的容器访问s3。

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

有关每个权限所需的资源描述的详细信息,请参阅


您能够从EC2实例上运行的shell中获取bucket列表,这一事实向我表明您已经配置了另一个用户。在
$HOME/.aws
中查找文件,并查找以
aws
开头的环境变量。我的问题的可能重复项几乎没有什么不同。针对给定问题给出的解决方案是创建IAM角色并将其附加到EC2实例,我已经完成并测试了该实例。s3列表从EC2开始工作。但不是从它上面运行的容器。
"Resource": [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*"
]