Amazon web services 从ec2 docker容器访问S3 bucket被拒绝
我已经启动了一个EC2实例,它需要连接到s3 bucket。 我创建了IAM角色并将其链接到EC2实例。从EC2 awscli我可以列出文件,但是我在该EC2中部署了一个容器,当尝试列出文件时,我得到了错误-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": [
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/*"
]