如何获取Lambda以编程方式部署到的accountId?

时间:2018-09-24 12:28:23

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

我想要获取Lambda部署到的AWS账户的accountId。

boto3.client('sts').get_caller_identity()['Account']会返回lambda的部署帐户本身还是lambda调用者帐户吗?

在自己的代码中获取Lambda AWS accountId的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

使用一组环境变量AWS_ACCESS_KEY_IDAWS_SECRET_KEYAWS_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中传递。