AWS Lambda读取zip文件的内容作为源代码上传

时间:2016-09-13 19:35:59

标签: python amazon-web-services aws-lambda

我有两个文件:

MyLambdaFunction.py

config.json

我将这两个压缩在一起以创建 MyLambdaFunction.zip 。然后我通过AWS控制台将其上传到我的lambda函数。

config.json 的内容是各种环境变量。我需要一种方法来在每次运行lambda函数时读取文件的内容,然后使用里面的数据来设置运行时变量。

如何让我的Python Lambda函数读取一个文件的内容 config.json ,该文件是用源代码上传到zip文件中的?

3 个答案:

答案 0 :(得分:5)

从@helloV向右推方向推出。

在python文件的顶部put" import os"

在您的函数处理程序中添加以下内容:

  {
    test: /\.less$/,
    loader: 'style!css?importLoaders=2&sourceMap&localIdentName=[local]__[hash:base64:5]!less-loader'
  },
  { test: /\.css/, loader: 'style!css?importLoaders=2&sourceMap&localIdentName=[local]__[hash:base64:5]' },

那一点,一行一行地执行以下操作:

  • 获取存储config.json文件的路径
  • 打印该路径以便在CloudWatch日志中查看
  • 打开存储在该路径中的文件,阅读内容
  • 将内容加载到json对象以便于导航
  • 抓取存储在json
  • 中的其中一个变量的值
  • 打印以便在CloudWatch日志中查看

这是config.json的样子:

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)

修改 AWS lambda现在支持在控制台UI中直接使用环境变量。因此,如果您的用例与我的相同(即配置文件),则不再需要配置文件。

答案 1 :(得分:2)

试试这个。您上传的文件可以访问:

import os

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

答案 2 :(得分:1)

实际上,我更愿意判断正在运行的lambda的上下文来确定它应该使用的配置,而不是上传难以维护的不同的zip文件。

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

config = lambda_configs[context.function_name]