【发布时间】:2016-03-13 00:18:42
【问题描述】:
我目前在同一个 Elastic Beanstalk“应用程序”内的两个不同“环境”上运行同一个 NodeJS Sails 应用程序(AWS 特定术语用引号括起来)。我的意图是让这些“环境”用作登台和生产。 Sails 提供了一种基于环境变量NODE_ENV 交换配置的内置方法。但是,当我在一个“环境”中设置环境变量时,它会覆盖另一个“环境”的值。
我已尝试使用 AWS CLI 命令eb setenv NODE_ENV="environment_name" 以及使用 Web 界面。 (有问题的设置位于“环境属性”标题下的Application > Environment > Configuration > Software Configuration。)
我一直在尝试搜索这个问题,但我一直很难找到任何专门解决它的东西。像the selected one here 这样的答案暗示可以做我正在寻找的事情。
我设置这个变量的方式有问题吗?我是否误解了 Elastic Beanstalk 如何处理这些设置?我知道我也可以通过更改 .ebextensions 文件来为不同的部署设置环境变量,但我更喜欢更干净的修复。
根据要求,这是eb status 和eb list 的输出(实际应用名称已替换):
$ eb status
Environment details for: app-staging
Application name: app
Region: us-east-1
Deployed Version: 1.1.0
Environment ID: e-fxxxxxxxxx
Platform: 64bit Amazon Linux 2015.03 v2.0.1 running Node.js
Tier: WebServer-Standard
CNAME: app-staging.elasticbeanstalk.com
Updated: 2015-12-08 03:54:37.894000+00:00
Status: Ready
Health: Green
$ eb list
app-production
* app-staging
【问题讨论】:
-
环境变量是每个环境的,不会相互覆盖。你能贴吗?发出
eb list以查看您实际上已将两者分开。您帖子中的唯一问题是您忘记在eb setenv命令中添加目标环境。但话又说回来,使用 Web 界面应该可以工作。 -
谢谢,我已添加此信息。我认为当我配置 EB CLI 时,我选择了一个特定的“环境”来使用,但我肯定会尝试使用
[-e environment]标志并让您知道。
标签: node.js amazon-web-services amazon-elastic-beanstalk environment