在 EB 应用程序级别覆盖的 AWS Elastic Beanstalk 环境变量

AWS Elastic Beanstalk environment variables overriding at the EB application level

我目前 运行 在同一 Elastic Beanstalk "application" 中的两个不同 "environments" 上使用相同的 NodeJS Sails 应用程序(AWS-specific 术语在引号中)。我的意图是让这些 "environments" 用作演出和制作。 Sails 提供了一种 built-in 方法,用于根据环境变量 NODE_ENV 交换配置。但是,当我在一个 "environment," 中设置环境变量时,它会覆盖另一个的值。

我已尝试使用 AWS CLI 命令 eb setenv NODE_ENV="environment_name" 以及使用 Web 界面。 (有问题的设置在 "Environment Properties" header 下的 Application > Environment > Configuration > Software Configuration。)

我一直在努力寻找这个问题,但我一直很难找到任何具体解决它的方法。像 the selected one here 这样的回答暗示我可以做我正在寻找的事情。

我设置这个变量的方式有问题吗?我是否误解了 Elastic Beanstalk 如何处理这些设置?我知道我也可以通过为不同的部署更改 .ebextensions 文件来设置环境变量,但我更喜欢更清晰的修复。

根据要求,这是 eb statuseb 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

原来发生这个问题是因为 AWS Web 界面跟不上我所做的更改。环境变量没有被覆盖。注销并重新登录为我解决了这个问题。

我注意到,一般来说,AWS 上的许多感知问题都可以通过这种方式得到解决。