簡體   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