我在 Elastic Beanstalk for AL2 中的环境变量在哪里?
Where are my environment variables in Elastic Beanstalk for AL2?
我正在使用 elastic beanstalk
部署 Django
应用程序。我想在 EC2
实例上 SSH
执行一些 shell 命令,但环境变量似乎不存在。我通过 AWS GUI(配置 -> 环境属性)指定了它们,它们似乎在我的应用程序启动期间工作。
我尝试通过以下方式激活和停用虚拟环境:
source /var/app/venv/*/bin/activate
是否有一些环境(或我可以 运行 的脚本)来访问设置了所有属性的环境?否则,我几乎无法 运行 任何像 python3 manage.py ...
这样的命令,因为没有配置设置模块(我知道如何手动指定它,但我的应用程序需要大约 7 个变量才能工作)。
在 ssh 进入 EC2 实例后尝试 运行 命令 /opt/elasticbeanstalk/bin/get-config environment
。
在 部署期间,环境属性随时可供您的 .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
部分 returns 所有环境属性作为 YAML,sed
部分将 YAML 输出中的 ': '
替换为 '='
,并且xargs
部分修复了引用的数字。
请注意,不需要 sudo
。
或者,您可以参考this AWS knowledge center post:
Important: On Amazon Linux 2, all environment properties are centralized into a single file called /opt/elasticbeanstalk/deployment/env
. You must use this file during Elastic Beanstalk's application deployment process only. ...
post 描述了如何在部署期间使用 .platform
挂钩制作 env
文件的副本,以及如何设置权限以便您以后可以访问该文件。
您也可以使用 SSH 手动执行类似的步骤。一旦你设置了副本,并获得适当的权限,你就可以 source
它。
注意:
Note: Environment properties with spaces or special characters are interpreted by the Bash shell and can result in a different value.
如果您尝试访问 eb 脚本 elastic beanstalk 中的环境变量
使用这个
$(/opt/elasticbeanstalk/bin/get-config environment -k ENVURL)
{ "Ref" : "AWSEBEnvironmentName" }
$(/opt/elasticbeanstalk/bin/get-config environment -k ENVURL)
我正在使用 elastic beanstalk
部署 Django
应用程序。我想在 EC2
实例上 SSH
执行一些 shell 命令,但环境变量似乎不存在。我通过 AWS GUI(配置 -> 环境属性)指定了它们,它们似乎在我的应用程序启动期间工作。
我尝试通过以下方式激活和停用虚拟环境:
source /var/app/venv/*/bin/activate
是否有一些环境(或我可以 运行 的脚本)来访问设置了所有属性的环境?否则,我几乎无法 运行 任何像 python3 manage.py ...
这样的命令,因为没有配置设置模块(我知道如何手动指定它,但我的应用程序需要大约 7 个变量才能工作)。
在 ssh 进入 EC2 实例后尝试 运行 命令 /opt/elasticbeanstalk/bin/get-config environment
。
在 部署期间,环境属性随时可供您的 .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
部分 returns 所有环境属性作为 YAML,sed
部分将 YAML 输出中的 ': '
替换为 '='
,并且xargs
部分修复了引用的数字。
请注意,不需要 sudo
。
或者,您可以参考this AWS knowledge center post:
Important: On Amazon Linux 2, all environment properties are centralized into a single file called
/opt/elasticbeanstalk/deployment/env
. You must use this file during Elastic Beanstalk's application deployment process only. ...
post 描述了如何在部署期间使用 .platform
挂钩制作 env
文件的副本,以及如何设置权限以便您以后可以访问该文件。
您也可以使用 SSH 手动执行类似的步骤。一旦你设置了副本,并获得适当的权限,你就可以 source
它。
注意:
Note: Environment properties with spaces or special characters are interpreted by the Bash shell and can result in a different value.
如果您尝试访问 eb 脚本 elastic beanstalk 中的环境变量 使用这个
$(/opt/elasticbeanstalk/bin/get-config environment -k ENVURL)
{ "Ref" : "AWSEBEnvironmentName" }
$(/opt/elasticbeanstalk/bin/get-config environment -k ENVURL)