【问题标题】:Where are my environment variables in Elastic Beanstalk for AL2?我在 Elastic Beanstalk for AL2 中的环境变量在哪里?
【发布时间】:2021-02-08 20:24:18
【问题描述】:

我正在使用elastic beanstalk 部署Django 应用程序。我想在EC2 实例上SSH 执行一些shell 命令,但环境变量似乎不存在。我通过 AWS GUI(配置 -> 环境属性)指定了它们,它们似乎在我的应用程序启动期间工作。

我尝试通过以下方式激活和停用虚拟环境:

source /var/app/venv/*/bin/activate

是否有一些环境(或我可以运行的脚本)来访问设置了所有属性的环境?否则,我几乎无法运行像 python3 manage.py ... 这样的任何命令,因为没有配置设置模块(我知道如何手动指定它,但我的应用程序需要大约 7 个变量才能工作)。

【问题讨论】:

    标签: django amazon-elastic-beanstalk amazon-linux-2


    【解决方案1】:

    尝试在 ssh 进入 EC2 实例后运行命令 /opt/elasticbeanstalk/bin/get-config environment

    【讨论】:

      【解决方案2】:

      部署期间,环境属性可随时供您的 .platform 挂钩脚本使用。

      部署后,例如使用eb ssh时,需要手动加载环境属性。

      一种选择是使用 EB get-config 工具。环境属性可以单独访问(使用-k 选项),也可以作为带有键值对的 JSON 或 YAML 对象访问。

      例如,export 所有环境属性的一种方法是:

      export $(/opt/elasticbeanstalk/bin/get-config --output YAML environment | 
               sed -r 's/: /=/' | xargs)
      

      这里 get-config 部分将所有环境属性作为 YAML 返回,sed 部分将 YAML 输出中的 ': ' 替换为 '='xargs 部分修复了引用的数字。

      请注意,这需要sudo

      或者,您可以参考this AWS knowledge center post

      重要提示:在 Amazon Linux 2 上,所有环境属性都集中到一个名为 /opt/elasticbeanstalk/deployment/env 的文件中。您必须在 Elastic Beanstalk 的应用程序部署过程中使用此文件。 ...

      这篇博文介绍了如何在部署期间使用.platform 挂钩制作env 文件的副本,以及如何设置权限以便您以后可以访问该文件。

      您也可以使用 SSH 手动执行类似的步骤。设置好副本并获得适当的权限后,您可以source 它。

      小心:

      注意:带有空格或特殊字符的环境属性由 Bash shell 解释,并可能产生不同的值。

      【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2017-07-24
      • 2019-10-04
      • 2015-08-05
      • 2016-12-10
      • 2015-06-08
      • 2018-04-27
      • 2016-03-25
      • 2018-09-11
      相关资源
      最近更新 更多