我正在尝试使用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?