django - 我在 Elastic Beanstalk for AL2 中的环境变量在哪里?
问题描述
我正在使用elastic beanstalk
部署Django
应用程序。我想SSH
在EC2
实例上执行一些 shell 命令,但环境变量似乎不存在。我通过 AWS GUI(配置 -> 环境属性)指定了它们,它们似乎在我的应用程序启动期间工作。
我尝试通过以下方式激活和停用虚拟环境:
source /var/app/venv/*/bin/activate
是否有一些环境(或我可以运行的脚本)来访问具有所有属性集的环境?否则,我几乎无法运行任何命令,python3 manage.py ...
因为没有配置设置模块(我知道如何手动指定它,但我的应用程序需要大约 7 个变量才能工作)。
解决方案
在.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
.
或者,您可以参考此 AWS 知识中心帖子:
重要提示:在 Amazon Linux 2 上,所有环境属性都集中到一个名为
/opt/elasticbeanstalk/deployment/env
. 您只能在 Elastic Beanstalk 的应用程序部署过程中使用此文件。...
这篇文章描述了如何env
在部署期间制作文件的副本,使用.platform
钩子,以及如何设置权限以便您以后可以访问该文件。
您也可以使用 SSH 手动执行类似的步骤。一旦您设置了副本,并具有适当的权限,您就可以source
了。
谨防:
注意:带有空格或特殊字符的环境属性由 Bash shell 解释,并可能产生不同的值。
推荐阅读
- r - R: 有没有办法自动计算 Outlook 文件夹中的电子邮件数量?
- django - Django-tables2 行跨度
- python - 获取 tf.train.exponential_decay 的当前 LR
- python-3.x - 我正在寻找一个脚本,它将从文本填充中获取 IP 地址并 ping 所有这些
- html - Facebook 喜欢使用 edge.create 的回调事件不起作用
- html - Flexbox 在 Edge 和 FireFox 中不起作用
- css - 使用转义字符将值从 mixin 传递给类
- xcode - 如何在 Xcode 中设置按钮以运行命令
- sql - 未提供 SQL ODBC Sybase TO_DATE 过程
- .htaccess - 重定向到 https。与两个域冲突