我有一个Lambda函数,该函数成功承担了另一个帐户的角色,可以从其API下载WAF匹配。
我还需要从执行Lambda的帐户中获取SSM参数。当然,我可以先做那个步骤,然后再担任这个角色。
但是我想知道是否有办法恢复到Lambda本身的执行角色。万一将来可能会发生连锁反应?
答案 0 :(得分:0)
您的代码实际上并没有“交换”到其他角色。
相反,在代码中,您指定要使用的凭据。
担任角色时,您将使用:
import boto3
sts_client = boto3.client('sts')
response = sts_client.assume_role(...)
assumed_session = boto3.Session(
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken'])
然后您可以使用该Session
连接到服务:
# Connect to WAF using assumed_session
waf_client = assumed_session.client('waf')
response = waf_client.get_sampled_requests(...)
以后您要使用Lambda函数提供的 default 凭据时,只需使用常规语法即可:
# Note: No 'Session' here, just the normal way to connect
ssm_client = boto3.client('ssm')
response = client.get_parameter(...)
因此,不要考虑“登录”到一组特定的凭据。相反,在对服务进行调用时,请提供使用所需的一组凭据创建的client
。然后,您可以随意在它们之间“交换”,因为重要的是每次呼叫使用的客户端。