【问题标题】:Set node.js process.env variables under AWS Elastic Beanstalk在 AWS Elastic Beanstalk 下设置 node.js process.env 变量
【发布时间】:2016-01-09 18:38:06
【问题描述】:

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

按照各种 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) 确认)。

知道此配置中缺少哪些环境变量以显示在 Node 的 process.env 下吗?

注意事项:

  • 看来namespace 不是强制性的。为了安全起见,我尝试了使用和不使用它,没有区别

【问题讨论】:

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


    【解决方案1】:

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

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

      正在创建应用程序版本存档“v1_3_3”。`

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

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

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

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

    【讨论】:

    • 我们的系统将部署与多个 Jenkins 作业创建的构建集成在一起(一些专用于 gihthub 拉取请求)。因此,我需要将特定构建与 Jenkins 作业及其相关的环境变量联系起来。虽然清晰、简单和优雅,但这个解决方案不会削减它......
    • 我知道这个答案不是问题作者所期望的,但这正是我正在寻找的。简洁大方。
    【解决方案2】:

    发现问题

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

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 2014-12-25
      • 2015-08-05
      • 2020-02-05
      • 2017-04-20
      • 2015-08-07
      • 2021-01-22
      • 2016-08-18
      相关资源
      最近更新 更多