如何从YAML拨打.env文件?

时间:2017-08-10 10:32:32

标签: yaml serverless-framework pyyaml

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

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作,而不是使用.env文件,如果您正在关注dotenv包,则该文件是一个简单的属性文件:

  1. 创建其他.yml文件,例如.secrets.yml。你可以存储每个阶段的秘密:
  2. prod: MY_SECRET: foo dev: MY_SECRET: bar

    1. 存储您的秘密/配置
    2. 然后在serverless.yml

      1. 将此文件加载到对象中:
      2. custom: secrets: ${file(.secrets.yml):${self:provider.stage}}

        1. 将对象字段加载为环境变量:
        2. provider: environment: MY_SECRET: ${self:custom.secrets.MY_SECRET}

          如何在本地测试

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

          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;
              });
          }
          

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