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 (将#修改为@)