簡體   English   中英

AWS Lambda 讀取作為源代碼上傳的 zip 中的文件內容

[英]AWS Lambda read contents of file in zip uploaded as source code

我有兩個文件:

MyLambdaFunction.py

config.json

我 zip 這兩個一起創建MyLambdaFunction.zip 然后我通過 AWS 控制台將其上傳到我的 lambda function。

config.json的內容是各種環境變量。 我需要一種方法來在 lambda function 每次運行時讀取文件的內容,然后使用里面的數據來設置運行時變量。

如何讓我的 Python Lambda function 讀取文件config.json的內容,該文件是用源代碼上傳到 zip 文件中的?

從@helloV 向正確的方向推動來解決這個問題。

在 python 文件的頂部放置import os

在您的函數處理程序中放置以下內容:

configPath = os.environ['LAMBDA_TASK_ROOT'] + "/config.json"
print("Looking for config.json at " + configPath)
configContents = open(configPath).read()
configJson = json.loads(configContents)
environment = configJson['environment']
print("Environment: " + environment)

就在那里,一行一行,執行以下操作:

  • 獲取config.json文件的存放路徑
  • 打印該路徑以在 CloudWatch 日志中查看
  • 打開存儲在該路徑下的文件,讀取內容
  • 將內容加載到 json 對象以便於導航
  • 獲取存儲在 json 中的變量之一的值
  • 打印以在 CloudWatch 日志中查看

這是 config.json 的樣子:

{
    "environment":"dev"
}

編輯AWS lambda 現在支持直接在控制台 UI 中使用環境變量。 因此,如果您的用例與我的相同(即對於配置文件),則不再需要配置文件。

嘗試這個。 您上傳的文件可以通過以下方式訪問:

import os

os.environ['LAMBDA_TASK_ROOT']/config.json

實際上,我更願意判斷正在運行的 lambda 的上下文來確定它應該使用的配置,而不是上傳不同的 zip 文件,這很難維護。

lambda_configs = {
    "function_name_1":{
    },
    "function_name_2":
   {
   }
}

config = lambda_configs[context.function_name]

剛剛在 python3.8 lambda 中完成了它,簡單:

with open('./dir/file.whatever') as f:

它工作得很好。

import os 

os.environ['LAMBDA_TASK_ROOT'] + '/config.json'

或者你可以使用格式

{os.environ['LAMBDA_TASK_ROOT']}/config.json"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM