在python中的AWS Lambda函数中获取环境名称

时间:2020-10-13 13:40:57

标签: python python-3.x amazon-web-services aws-lambda development-environment

我想获取环境名称(dev / qa / prod),在该环境中我的AWS Lambda函数正在运行或以编程方式执行。我不想将其作为环境变量的一部分。 我们该怎么做?

2 个答案:

答案 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函数可以执行以下操作之一:

  1. def handler_name(event, context):-从event字典中读取数据。调用方将不得不添加此参数(因为我不知道什么是lambda触发器,所以我无法告诉它是否是一个好的解决方案)
  2. 从S3(或其他存储,如DB)读取数据
  3. 从AWS Systems Manager参数存储读取数据

我不想将其作为环境变量的一部分

为什么?