[英]Get environment name in AWS Lambda function in python
我想获取运行我的 AWS Lambda 函数或以编程方式执行的环境名称 (dev/qa/prod)。 我不想作为环境变量的一部分提供。 我们怎么做?
在 AWS 中,一切都在“生产”中。 也就是说,没有“AWS for Dev”或“AWS for QA”的概念。
由您来创建您声明为开发、质量保证或生产的资源。 有些人在不同的 AWS 账户中这样做,或者至少为每个环境使用不同的 VPC。
幸运的是,您提到“AWS 中的每个环境都有不同的角色” 。
这意味着 AWS Lambda 函数可以调用get_caller_identity()
来获取“有关其凭证用于调用操作的 IAM 用户或角色的详细信息”:
import boto3
def lambda_handler(event, context):
sts_client = boto3.client('sts')
print(sts_client.get_caller_identity())
它返回:
{
"UserId": "AROAJK7HIAAAAAJYPQN7E:My-Function",
"Account": "111111111111",
"Arn": "arn:aws:sts: : 111111111111:assumed-role/my-role/My-Function",
...
}
}
因此,您可以从Arn
提取正在使用的角色的名称。
您的 lambda 函数可以执行以下操作之一:
def handler_name(event, context):
- 从event
字典中读取数据。 调用者将不得不添加这个参数(因为我不知道什么是 lambda 触发器,我无法判断它是否是一个好的解决方案)我不想作为我的环境变量的一部分
为什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.