AWS EC2元数据从EC2(duh!)中提供了关于自身的必要信息-lambda有等效的信息吗。
我理解lambda函数与EC2不同的多租户和短命行为,但像Account ID、VPC AZ、Region这样的基本信息将有助于实现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_REGION
和AWS_DEFAULT_REGION
变量:https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html#lambda-环境变量。
event
可以具有类似于requestContext.accountId
的字段:https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html?shortFooter=true#eventsources-api网关请求
在浏览Terraform的lambda_function配置时发现了这一点。
在Lambda的上下文对象中,您可以解析出在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)的其余信息