在另一个账户中担任角色后,恢复为 AWS 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。然后,您可以根据需要在它们之间"交换",因为重要的是用于每次调用的客户端。

相关内容

  • 没有找到相关文章

最新更新