如何从 YAML 调用 .env 文件?

Joh*_*rus 4 yaml pyyaml serverless-framework

我想从我的yaml中隐藏我的秘密凭证,我需要使用.env,那么如何从我的yaml中调用.env文件,以便每次我调用这个YAML,YAML都会自动调用.env文件。请帮我。谢谢

Ben*_*uer 5

.env如果您遵循dotenv包,则可以执行以下操作,而不是使用文件(这是一个简单的属性文件):

  1. 创建附加.yml文件,例如.secrets.yml. 您可以存储每个阶段的秘密:
prod:
  MY_SECRET: foo
dev:
  MY_SECRET: bar
Run Code Online (Sandbox Code Playgroud)
  1. 在那里存储您的秘密/配置

然后在serverless.yml

  1. 将此文件加载到对象中:
custom:
  secrets: ${file(.secrets.yml):${self:provider.stage}}
Run Code Online (Sandbox Code Playgroud)
  1. 将对象字段加载为环境变量:
provider:
  environment:
    MY_SECRET: ${self:custom.secrets.MY_SECRET}
Run Code Online (Sandbox Code Playgroud)

如何在本地测试

在您的测试中,您可以通过以下方式加载机密文件:

const yaml = require('js-yaml');
const fs = require('fs');
const _ = require('lodash');

module.exports.loadSecrets = function (env = 'dev', path = './.secrets.yml') {
    const secrets = yaml.load(fs.readFileSync(path));
    _.forEach(secrets[env], (value, key) => {
        process.env[key] = value;
    });
}
Run Code Online (Sandbox Code Playgroud)

参考:http ://www.goingserverless.com/blog/using-environment-variables-with-the-serverless-framework