Amazon web services AWS:botocore.exceptions.ClientError:发生错误(拒绝访问)
我正在AWS批处理中运行一些作业。我带来了每个容器的.aws凭据文件和配置文件 这是我试图运行的代码Amazon web services AWS:botocore.exceptions.ClientError:发生错误(拒绝访问),amazon-web-services,boto3,amazon-iam,botocore,Amazon Web Services,Boto3,Amazon Iam,Botocore,我正在AWS批处理中运行一些作业。我带来了每个容器的.aws凭据文件和配置文件 这是我试图运行的代码 s3 = boto3.resource('s3') session = boto3.Session() client = session.client('s3') dse_input_s3_objects = client.list_objects( Bucket='mybucket', Prefix='mypath/' ) 当我在本地运行代码时,我没有问题,但是当我尝试批量
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
我正在使用以下批处理服务角色
需要注意的是,在批处理中,我使用的是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",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXX:root"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
},
{
"Sid": "PutPermission",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXX:root"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
您链接的IAM角色不包括对S3的任何权限,您正试图访问S3。bucket策略是否允许该角色?我刚刚在编辑中将我的bucket策略添加到问题中。当您授予对帐户的访问权限时,该帐户中的IAM角色必须在其角色策略中具有S3权限。