我已经启动了连接到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/