如何解决AWS:botocore.exceptions.ClientError:发生错误AccessDenied
我正在AWS Batch中运行一些作业。我已经为每个容器带来了.aws凭证文件和配置文件。
这是我要运行的代码。
s3 = boto3.resource('s3')
session = boto3.Session()
client = session.client('s3')
dse_input_s3_objects = client.list_objects(
Bucket='mybucket',Prefix='mypath/'
)
当我在本地运行代码时,没有任何问题,但是当我尝试批量运行它时,出现以下错误:
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
我正在使用以下批处理服务角色
https://docs.aws.amazon.com/batch/latest/userguide/service_IAM_role.html
需要注意的一点是,在批处理中,我使用的是conda环境,因此我不确定这是否会导致访问凭据时出现任何问题?但是,读取错误后,似乎已经成功找到了凭据。
关于为什么此方法无效的任何想法?我需要在批处理服务角色中添加一些内容吗?
编辑:
这是我的存储桶策略
{
"Version": "2012-10-17","Statement": [
{
"Sid": "ListPermission","Effect": "Allow","Principal": {
"AWS": "arn:aws:iam::XXXXXXXXX:root"
},"Action": [
"s3:GetBucketLocation","s3:ListBucket"
],"Resource": "arn:aws:s3:::mybucket"
},{
"Sid": "GetPermission","Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXX:root"
},"Action": "s3:GetObject","Resource": "arn:aws:s3:::mybucket/*"
},{
"Sid": "PutPermission","Action": [
"s3:PutObject","s3:PutObjectAcl"
],"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。