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

Rud*_*koŭ 3 amazon-web-services boto3 aws-lambda

我想获取部署 Lambda 的 AWS 帐户的 accountId。

boto3.client(“STS”)。get_caller_identity()“账户”]返回拉姆达的帐户部署本身,或帐户拉姆达呼叫者的?

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

小智 8

Lambda 运行是使用一组环境变量AWS_ACCESS_KEY_IDAWS_SECRET_KEYAWS_SESSION_TOKEN等调用的,这些变量与直接调用 sts.assume_role() 所产生的结果相同,假定 lambda 函数的配置中指定了角色。如果您查看完整的输出,get_caller_identity()您会看到该Arn字段是正常的 arn-of-role-slash-name-of-entity-assuming-the-role。因此,我认为该Account字段的值在技术上是拥有所承担的 IAM 角色的帐户,但由于(AFAIK?)必须与 lambda 函数本身来自同一帐户,我认为这是该帐户的可靠指标lambda 函数。

就我个人而言,我AWS_ACCOUNT_ID在大多数/所有 lambda 函数上设置了一个环境变量,这在 CloudFormation 中非常容易作为AWS_ACCOUNT_ID: { Ref: "AWS::AccountId" }.