在另一个账户中担任角色后,恢复为AWS Lambda执行角色

时间:2018-06-19 15:19:52

标签: amazon-web-services aws-lambda aws-iam

我有一个Lambda函数,该函数成功承担了另一个帐户的角色,可以从其API下载WAF匹配。

我还需要从执行Lambda的帐户中获取SSM参数。当然,我可以先做那个步骤,然后再担任这个角色。

但是我想知道是否有办法恢复到Lambda本身的执行角色。万一将来可能会发生连锁反应?

1 个答案:

答案 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。然后,您可以随意在它们之间“交换”,因为重要的是每次呼叫使用的客户端。