amazon-web-services - 在另一个账户中担任角色后恢复为 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
使用所需凭据集创建的服务。然后,您可以随心所欲地在它们之间“交换”,因为重要的是每次呼叫使用的客户端。
推荐阅读
- hibernate - 在不同事务中更新和保存相关实体时,服务器停止工作
- javascript - 点击查看使用 redux 和 reactjs 的特定用户的详细信息
- java - 如何在java中优化这个函数“checkCode”
- gml - Game Maker Studio 2 get_string 已弃用
- wordpress - 图库第一次无法正确加载,仅在重新加载后
- google-bigquery - BigQuery 中的空数组
- javascript - Javascript为php输出制作下一页和上一页
- java - 未找到 Log4j2.xml 配置文件
- forms - 必填字段,自动对焦。单击链接时,错误验证会移动单击目标
- javascript - 在 Angular 6 应用程序中存储本地存储以外的用户信息并在重新加载时保持相同的位置?