如何在AWS Lambda上使用环境变量?

dan*_*own 20 environment-variables amazon-web-services aws-lambda

我正在编写一个我希望作为AWS Lambda函数运行的应用程序,但也遵守Twelve-Factor应用程序指南.特别是第三部分.配置需要使用环境变量进行配置.

但是,我找不到为AWS Lambda实例设置环境变量的方法.谁能指出我正确的方向?

如果无法使用环境变量,请推荐一种方法来使用环境变量进行本地开发,并将它们转换为可以使用AWS中的应用程序代码访问的有效配置系统.

谢谢.

ser*_*gio 16

截至2016年11月18日,AWS Lambda 支持环境变量.

可以使用AWS控制台和AWS CLI 指定环境变量.这是LD_LIBRARY_PATH使用AWS CLI 创建具有环境变量的Lambda的方法:

aws lambda create-function \
  --region us-east-1
  --function-name myTestFunction
  --zip-file fileb://path/package.zip
  --role role-arn
  --environment Variables={LD_LIBRARY_PATH=/usr/bin/test/lib64}
  --handler index.handler
  --runtime nodejs4.3
  --profile default
Run Code Online (Sandbox Code Playgroud)


Tom*_*Tom 5

也许node-lambda的'自定义环境变量'功能可以解决您的问题:

https://www.npmjs.com/package/node-lambda
https://github.com/motdotla/node-lambda

"AWS Lambda不允许您为您的函数设置环境变量,但在许多情况下,您需要使用您不想检查版本控制的安全值来配置您的函数,例如数据库连接字符串或加密密钥将示例deploy.env文件与--configFile标志结合使用,可以设置在编译后的Lambda函数作为process.env环境变量上传到S3之前的值."


hel*_*loV 4

无法为 lambda 执行配置环境变量,因为每次调用都是不相交的并且不存储任何状态信息。然而,有一些方法可以实现你想要的。

AWS credentials- 您可以避免将其存储在环境变量中。相反,授予您的角色特权LambdaExec。事实上,AWS 建议使用角色而不是 AWS 凭证。

Database details:一个建议是将其存储在私有存储桶中的众所周知的文件中。Lambda 可以在调用该文件时下载该文件,读取包含数据库详细信息和其他信息的内容。由于存储桶是私有的,其他人无法访问该文件。该LambdaExec角色需要 IAM 权限才能访问私有存储桶。

  • 您可以选择服务器端或客户端加密。我一直用。http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html (3认同)
  • 与此问题相关的 KMS 的问题是它需要更改代码。此代码也需要能够在非 AWS 系统上运行,并且它使用“process.env”来实现。遗憾的是,这在 Lambda 上无法实现。 (2认同)