在AWS Elastic Beanstalk下设置node.js process.env变量

时间:2015-10-12 10:07:52

标签: node.js amazon-web-services amazon-ec2 environment-variables elastic-beanstalk

我试图将Jenkins-build特定的环境变量传播到node.js服务器中,以便能够知道AWS的构建#/ git-branch / commit-sha弹性beanstalk环境正在运行。

根据各种AWS指南,我创建了一个包含环境变量的文件。目的是在构建过程中替换文件中的值,以便它们反映特定于构建的信息:

$ cat .ebextensions/env.config
option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: BUILD_NUMBER
    value: BUILD_NUMBER_VALUE

问题是当节点实例在EBS环境中启动时,process.env.BUILD_NUMBER未设置(由节点服务器中的console.log(process.env)确认)。

知道在此配置中缺少哪些环境变量在节点process.env下显示?

注意:

  • 似乎namespace不是强制性的。为了安全起见,我尝试了两者并且没有它,没有区别

2 个答案:

答案 0 :(得分:0)

另一种可能的选择是使用package.json为您生成状态。如果您运行npm version patch npm将增加应用程序的补丁版本。它还会使用相同的版本名称标记您的git仓库。如果然后运行eb deploy弹性beanstalk将创建一个以标记命名的zip文件。例如:

  1. package.json中的当前版本===" 1.3.2"
  2. 运行npm version patch
  3. package.json中的新版本===" 1.3.3"
  4. eb deploy log:

      

    创建应用程序版本存档" v1_3_3" .`

         

    将store-api / v1_3_3.zip上传到S3。这可能需要一段时间。

  5. 然后,您可以在代码中的package.json中要求:

    var p = require('./package.json');
    console.log(p.version);
    

    结果是您在repo中最终得到一个标签,该标签链接到package.json文件中的某个版本,然后该文件还链接到s3中的.zip文件。

    enter image description here

答案 1 :(得分:0)

发现问题

我对此感到相当愚蠢,因为问题是.ebextensions / env.config文件在项目中的gulp任务期间被覆盖了。因此问题是配置文件实际上没有部署。一旦部署,一切都像魅力......