我可以使用 AWS 控制台手动担任角色,但在使用 boto3 担任角色时出现访问被拒绝错误 |
sts_client = boto3.client('sts')
assumed_role = sts_client.assume_role(
RoleArn=aws_src_role_arn,
RoleSessionName='AssumeRoleSession')
我也尝试使用 lambda 和 python 代码,但两者都面临同样的问题
当您通过调用 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"],
)