我的 Elastic Beanstalk for AL2 中的环境变量在哪里?

Xen*_*mar 13 django amazon-elastic-beanstalk amazon-linux-2

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

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

source /var/app/venv/*/bin/activate
Run Code Online (Sandbox Code Playgroud)

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

djv*_*jvg 17

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

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

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

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

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

此处,该get-config部分以 YAML 形式返回所有环境属性,该sed部分将': 'YAML 输出中的 替换为'=',并且该xargs部分修复了带引号的数字。

请注意,这不需要sudo.

或者,您可以参考此 AWS 知识中心帖子

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

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

您还可以使用 SSH 手动执行类似的步骤。一旦设置了副本,并具有适当的权限,您就可以进行source操作。

谨防:

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


Zuf*_*fra 12

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