我在使用 Boto3 连接到 STS 假定角色时遇到访问被拒绝错误

问题描述 投票:0回答:1

我可以使用 AWS 控制台手动担任角色,但在使用 boto3 担任角色时出现访问被拒绝错误 |

sts_client = boto3.client('sts')
assumed_role = sts_client.assume_role(
    RoleArn=aws_src_role_arn,
    RoleSessionName='AssumeRoleSession')

我也尝试使用 lambda 和 python 代码,但两者都面临同样的问题

boto3 sts assume-role
1个回答
0
投票

当您通过调用 STS 担任角色时,您将获得临时凭证作为响应。您需要使用这些凭据构建额外的客户端或资源,因为默认客户端使用原始 lambda 的角色凭据。摘自AWS文档以及代码示例:

response = sts_client.assume_role(
    RoleArn=assume_role_arn, RoleSessionName=session_name
)
temp_credentials = response["Credentials"]
print(f"Assumed role {assume_role_arn} and got temporary credentials.")

...

s3_resource = boto3.resource(
    "s3",
    aws_access_key_id=temp_credentials["AccessKeyId"],
    aws_secret_access_key=temp_credentials["SecretAccessKey"],
    aws_session_token=temp_credentials["SessionToken"],
)
© www.soinside.com 2019 - 2024. All rights reserved.