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_NAMEprintenv 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 看不到环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk 自定义平台

将 AMI 映像用于 Elastic Beanstalk

从 Elastic Beanstalk 安装 PHP 模块

删除了自定义 Amazon Beanstalk AMI id

在使用 AWS Elastic Beanstalk 创建实例时运行命令

AWS Elastic Beanstalk 与 AMI2 和 docker-compose.yml