Serverless Framework v1.0.0 GA - Python处理程序中的环境变量

时间:2016-10-16 12:24:04

标签: python aws-lambda serverless-framework

关于无服务器框架的env变量的最佳实践是什么?

我听过有关python dotenv环境的一些讨论,但我不太熟悉python,所以寻找有关设置和使用的指导(一个例子会很好!)

例如,我想在无服务器处理函数中为db_arn创建一个环境变量。

db_arn =“ec2-xx-xx-xx-xxx.eu-west-1.compute.amazonaws.com”

def getCustomer():    #connect使用db_arn

我喜欢db_arn是环境变量(例如dev,test,prod),而不是硬编码字符串。

如何使用dotenv完成此操作以及如何组织无服务器服务以启用此功能?

非常欢迎,谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用serverless-plugin-write-env-vars插件在serverless.yml中定义环境变量,如下所示:

service: my-service

custom:
   writeEnvVars:
      DB_ARN: "ec2-xx-xx-xx-xxx.eu-west-1.compute.amazonaws.com"

plugins:
   - serverless-plugin-write-env-vars

请注意,变量必须在custom:writeEnvVars:下定义。

该插件将在部署到AWS Lambda的代码期间创建.env文件。

在代码中,使用python-dotenv,您可以通过加载.env文件来读取环境变量:

import os.path
from dotenv import load_dotenv

dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(dotenv_path)

db_arn = os.environ.get('DB_ARN')

以防万一,如果您需要有关部署和加载外部依赖项的帮助,请查看https://stackoverflow.com/a/39791686/1111215