【问题标题】:Elastic Beanstalk custom AMI can't see environment variablesElastic Beanstalk 自定义 AMI 看不到环境变量
【发布时间】:2014-08-25 02:37:29
【问题描述】:

由于某些大型软件包要求,我正在为 Elastic Beanstalk 使用自定义 AMI。

当我通过 SSH 连接到 EC2 实例时,我的应用程序没有任何环境变量(在 Elastic Beanstalk Web 控制台设置中指定)。

我在生产中的应用可以很好地访问变量,但我不能在控制台中这样做,这确实让调试变得非常困难。

当我使用 SSH 控制台时,如何使所有环境变量可用?

【问题讨论】:

    标签: amazon-web-services ssh amazon-ec2 amazon-elastic-beanstalk


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2012-12-13
        • 2012-08-13
        • 2017-04-07
        • 2023-03-28
        • 2015-08-05
        • 2014-12-08
        • 2020-11-09
        • 2017-07-24
        • 2015-06-08
        相关资源
        最近更新 更多