繁体   English   中英

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

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

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

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

为什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM