AWS Lambda 元数据,如 EC2 元数据,适用于 lambda

AWS Lambda Meta-Data like EC2 Meta-Data for lambda

AWS EC2 元数据从 EC2 提供关于自身的必要信息(呃!)- 是否有任何等效于 lambda 的信息。

我了解 lambda 函数的多租户和短期行为,这与 EC2 不同,但诸如账户 ID、VPC AZ、区域等基本信息将有助于实现大量 AWS 自动化。

不,很遗憾不是。上下文对象是最接近的东西,但它提供的信息非常有限。 http://docs.aws.amazon.com/lambda/latest/dg/programming-model-v2.html

如果您自己或以编程方式调用 lambda 函数,您可以在有效负载中传递帐户 ID 和区域。

部署lambda时可以设置环境变量:https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html

那里已经有 AWS_REGIONAWS_DEFAULT_REGION 个变量:https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html#lambda-environment-variables

event 可以有类似 requestContext.accountId 的字段:https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html?shortFooter=true#eventsources-api-gateway-request

浏览 Terraform 的 lambda_function 配置时发现了这一点。

在Lambda的context对象中,可以在invoked_function_arn.

中解析出一些你要找的信息

例如在 Python 中:context.split(':')[3] 将为您提供区域,context.split(':')[4] 将为您提供 aws 帐户 ID,context.split(':')[6] 将为您提供功能名称(在 context.function_name

中也可用

invoked_function_arn 如下所示:

arn:aws:lambda:us-east-1:741063561123:函数:lambda_context

获得该信息后,您可以使用 aws 库(例如 Python 的 boto3)获取有关 lambda 的其余信息(例如 VPC、SG)