Elastic Beanstalk 自定义 AMI 看不到环境变量
Posted
技术标签:
【中文标题】Elastic Beanstalk 自定义 AMI 看不到环境变量【英文标题】:Elastic Beanstalk custom AMI can't see environment variables 【发布时间】:2014-08-25 02:37:29 【问题描述】:由于某些大型软件包要求,我正在为 Elastic Beanstalk 使用自定义 AMI。
当我通过 SSH 连接到 EC2 实例时,我的应用程序没有任何环境变量(在 Elastic Beanstalk Web 控制台设置中指定)。
我在生产中的应用可以很好地访问变量,但我不能在控制台中这样做,这确实让调试变得非常困难。
当我使用 SSH 控制台时,如何使所有环境变量可用?
【问题讨论】:
【参考方案1】:在浏览 Elastic Beanstalk 支持论坛时找到了一种加载所有环境变量的简单方法:
. /opt/python/current/env
查看变量:echo $VAR_NAME
或printenv VAR_NAME
,在使用上述命令之前不起作用。 (UNIX, get environment variable)
奖励:
查看变量列表:printenv
将变量列为导出:cat /opt/python/current/env
要将导出添加到配置文件的末尾:cat /opt/python/current/env >> /path/to/my/file
【讨论】:
/opt/python/current/env
在最新的亚马逊操作系统中不存在
我发现这些环境变量存储在 JSON 中 /opt/elasticbeanstalk/deploy/configuration/containerconfiguration 下。编辑:实际上它们也在 /var/elasticbeanstalk/staging/elasticbeanstalk.env 下的常规环境变量列表中
@YWCAHello 这并不完全正确,或者至少当我连接到我的弹性 beanstalk 实例时它存在。
在 Amazon Linux 2 中,我在/opt/elasticbeanstalk/deployment/env
找到了它【参考方案2】:
Elastic Beanstalk 使用的环境变量不是 shell 环境变量。它们会在启动时传递到您的应用程序环境(针对不同语言使用不同的方法)。
例如
Java Environment Variables
php Environment Variables
我过去通过在应用的管理端设置一个页面来解决这个问题,该页面仅列出它们以用于调试目的。
【讨论】:
【参考方案3】:对于 Node.js,我必须手动添加它们:
export VARNAME="my value"
检查:
printenv VARNAME
【讨论】:
以上是关于Elastic Beanstalk 自定义 AMI 看不到环境变量的主要内容,如果未能解决你的问题,请参考以下文章
删除了自定义 Amazon Beanstalk AMI id