amazon-web-services - 从ec2 docker容器拒绝访问S3存储桶

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

我已经启动了连接到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实例上运行的容器访问s3。

最佳答案

ListBucket调用是在存储桶级别应用的,因此您需要将存储桶添加为IAM策略中的资源(按照书面规定,您只允许访问存储桶的文件):

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

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

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

关于amazon-web-services - 从ec2 docker容器拒绝访问S3存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55959516/

相关文章:

docker - 如何调出具有主机名和IP地址的容器,以便它们可以串行运行?

java - 查询请求: EC2 Version

amazon-web-services - 节点关闭时 Aerospike 丢失文档

c# - 使用 C# 以编程方式从亚马逊购买商品

ubuntu - Docker :/var/run/docker. sock:没有这样的文件或目录

linux - 状态错误 : no such file or directory while building Docker from a custom image with Docker build command

amazon-web-services - EC2 UserData 脚本在启动时未运行

macos - Amazon EC2 上的 Apple Mac 镜像?

amazon-web-services - Istio 1.4.8 : strange 400 error when used with AWS Load balancer

amazon-web-services - 使用 WebRTC 录制实时流媒体视频并使用 AWS 进行流式传输