在SSH中缺少Elastic Beanstalk环境变量

时间:2019-05-17 05:52:01

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

我试图在我的NodeJS应用程序上运行一些需要通过SSH运行的命令(例如,Sequelize播种),但是当我这样做时,我注意到预期的env vars丢失了。

如果我在本地计算机上运行eb printenv,则会看到在EB仪表板中设置的预期环境变量

如果我通过SSH登录并运行printenv,那么我期望的所有这些变量都将丢失。

那么发生的是,当我播种时,我得到一个错误:

node_modules/.bin/sequelize db:seed:all
ERROR: connect ECONNREFUSED 127.0.0.1:3306

我注意到端口错误,应该是5432。我检查了是否我的环境变量是用printenv设置的,并且它们不存在。这使我怀疑在ssh会话中未加载正确的env变量,而NodeJS却退回到了我在配置中提供的默认值。

我在线找到了一些解决方案,例如运行以下命令来加载env变量:

/opt/python/current/env

但是python目录不存在。 /opt/中的所有内容是elasticbeanstalkaws目录。

我取得了一些成功,所以我至少可以通过运行以下命令来看到env变量存在于服务器上的某个位置:

sudo /opt/elasticbeanstalk/bin/get-config environment --output YAML

但是仅运行此命令不能解决问题。它所做的只是将期望的env变量输出到屏幕。就是这样至少我知道他们一定在那里!但是当我运行printenv

时,env变量仍然不存在

那我该如何解决这个问题? Sequelize和NodeJS显然也没有看到env变量,它正在尝试使用在我的配置文件中设置的后备默认值。

0 个答案:

没有答案