我想获取环境名称(dev / qa / prod),在该环境中我的AWS Lambda函数正在运行或以编程方式执行。我不想将其作为环境变量的一部分。 我们该怎么做?
答案 0 :(得分:1)
在AWS中,所有内容都在“生产”中。也就是说,没有“用于开发的AWS”或“用于质量检查的AWS”的概念。
由您自己决定创建声明为开发,质量检查或生产的资源。有人在不同的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
中提取正在使用的角色的名称。
答案 1 :(得分:0)
您的lambda函数可以执行以下操作之一:
def handler_name(event, context):
-从event
字典中读取数据。调用方将不得不添加此参数(因为我不知道什么是lambda触发器,所以我无法告诉它是否是一个好的解决方案)我不想将其作为环境变量的一部分
为什么?