0

关于使用无服务器框架的 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 实现这一点,您将如何组织无服务器服务来实现这一点?

帮助非常欢迎谢谢!

4

1 回答 1

-1

您可以使用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:

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

在代码中,使用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

于 2016-10-18T08:27:57.590 回答