您可能想看看serverless-plugin-write-env-vars。.env
此插件将在部署时创建一个文件,其中包含您在serverless.yml
. 您仍然可以将配置保存在单独的文件(.yml
或.json
)中并从serverless.yml
.
例如:
假设/config/conf1/stage1/config.yml
包括:
# config.yml
url: https://foo.com
你可以参考它serverless.yml
:
# serverless.yml
custom:
myStage: ${opt:stage, self:provider.stage}
writeEnvVars:
MY_URL: ${file(./config/conf1/${self:custom.myStage}/config.yml):url}
plugins:
- serverless-plugin-write-env-vars
对于本地测试,您需要有一个脚本来.env
自己创建文件。一个python示例:
# test.py
import os.path
import sys
import shutil
here = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(here, ".."))
def before():
# copy temp .env to root folder
dotenv_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '.env_stub')
global temp_file_path
temp_file_path = os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir, '.env'))
print('Creating ' + temp_file_path + '...')
shutil.copyfile(dotenv_path, temp_file_path)
def after():
# remove temp .env from root folder
print('Removing ' + temp_file_path + '...')
os.remove(temp_file_path)
temp_file_path = None
before()
# test ...
after()