我正在尝试使用IAM角色连接到s3存储桶 .

我的存储桶名称是:test-bucket我创建了一个名称为: my_role_s3 的角色,并为其提供了完整的s3访问权限(即'AmazonS3FullAccess')

当我尝试使用代码访问存储桶的名称时 -

import boto3
import os
os.environ["HTTP_PROXY"] = "http://<username>:<password>@191.18.0.25:9400"
os.environ["HTTPS_PROXY"] = "https://<username>:<password>@191.18.0.25:9400"
 s3 = boto3.resource('s3')
 for bucket in s3.buckets.all():
     print ("Bucket: %s" % bucket.name)

I am able to connect 并获取存储桶名称 . 但为此,在内部,boto3正在使用Access密钥 . 但我不想使用访问密钥并使用IAM角色 . 所以对于IAM角色,我正在尝试这个代码 -

import boto3
import os
sts_client = boto3.client('sts')
os.environ["HTTP_PROXY"] = "http://<username>:<password>@191.18.0.25:9400"
os.environ["HTTPS_PROXY"] = "https://<username>:<password>@191.18.0.25:9400"
assumedRoleObject = sts_client.assume_role(
    RoleArn="arn:aws:iam::824214495785:role/my_role_s3",
    RoleSessionName="AssumeRoleSession1"
)
credentials = assumedRoleObject['Credentials']
s3_resource = boto3.resource(
    's3',
    aws_access_key_id = credentials['AccessKeyId'],
    aws_secret_access_key = credentials['SecretAccessKey'],
    aws_session_token = credentials['SessionToken'],
)

现在当调用方法 - sts_client.assume_role 时,我收到错误 -

botocore.exceptions.ClientError:调用AssumeRole操作时发生错误(AccessDenied):用户:arn:aws:iam :: 824214495785:用户/ testuser无权执行:sts:AssumeRole on resource:arn:aws:iam :: 824214495785:角色/ my_role_s3

Boto3正在使用该用户 - testuser . 您能否告诉我在我的代码/帐户设置中需要进行哪些更改,以便不使用testuser并使用该角色或允许testuser访问sts:Assumerole?