我有一个 Lambda 函数,它成功地在另一个账户中担任角色以从其 API 下载 WAF 命中。
我还需要从执行 Lambda 的帐户中获取 SSM 参数。当然,我可以先做这一步,然后再承担这个角色。
但我想知道是否有办法恢复 Lambda 本身的执行角色。以防将来可能发生一些链接?
我有一个 Lambda 函数,它成功地在另一个账户中担任角色以从其 API 下载 WAF 命中。
我还需要从执行 Lambda 的帐户中获取 SSM 参数。当然,我可以先做这一步,然后再承担这个角色。
但我想知道是否有办法恢复 Lambda 本身的执行角色。以防将来可能发生一些链接?
您的代码实际上并没有“交换”到不同的角色。
相反,在您的代码中,您指定要使用的凭据。
担任角色时,您将使用:
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 函数的默认凭证时,只需使用正常语法:
# Note: No 'Session' here, just the normal way to connect
ssm_client = boto3.client('ssm')
response = client.get_parameter(...)
因此,不要想着“登录”到一组特定的凭据。相反,当调用服务时,提供client
使用所需凭据集创建的服务。然后,您可以随心所欲地在它们之间“交换”,因为重要的是每次呼叫使用的客户端。