我想要获取Lambda部署到的AWS账户的accountId。
boto3.client('sts').get_caller_identity()['Account']会返回lambda的部署帐户本身还是lambda调用者帐户吗?
在自己的代码中获取Lambda AWS accountId的正确方法是什么?
答案 0 :(得分:2)
使用一组环境变量AWS_ACCESS_KEY_ID
,AWS_SECRET_KEY
,AWS_SESSION_TOKEN
等调用Lambda运行,这些环境变量与直接调用sts.assume_role()的结果相同承担在lambda函数的配置中指定的角色。如果查看get_caller_identity()
的完整输出,则会看到Arn
字段是正常的arn-of-role-slash-name-of-entity-assuming-therole。因此,我假设Account
字段的值从技术上讲是拥有 IAM角色的帐户,但由于(AFAIK?)必须与lambda来自同一帐户函数本身,我认为这是lambda函数的可靠指标。
就我个人而言,我在大多数/所有lambda函数上设置了一个AWS_ACCOUNT_ID
环境变量,这在AWS_ACCOUNT_ID: { Ref: "AWS::AccountId" }
中很容易在CloudFormation中传递。