Amazon Elastic Beanstalk blurb说:
Elastic Beanstalk让您"打开引擎盖"并保持完全控制...甚至通过Elastic Beanstalk控制台传递环境变量.
http://aws.amazon.com/elasticbeanstalk/
除了Elastic Beanstalk配置中的其他环境变量之外,如何传递其他环境变量?
我正在尝试在Elastic Beanstalk上设置Django / DRF应用程序,由于任何原因,Django都无法看到所需的环境变量。登录时,通过使用可以看到它们很好
$ eb ssh
$ cat /opt/python/current/env
Run Code Online (Sandbox Code Playgroud)
除了使用RDS的相对敏感的代码外,我还可以看到它们,只需使用即可$eb printenv
。
所有这些似乎已设置并正常工作。但是,Django喜欢在启动时立即读取环境,并且似乎尚未设置环境变量。我已经尝试过简单地插入print(os.environ)
in settings.py
,当我这样做时,我发现了一大堆不需要的环境变量,也没有'SUPERVISOR_GROUP_NAME': 'httpd'
我自己设置的变量DJ_SECRET_KEY
。
此后,我更改了代码以报告加载设置时不存在特定环境变量的情况,并从最近一次运行中生成了以下代码:
[Wed Nov 23 15:56:38.164153 2016] [:error] [pid 15708] DJ_SECRET_KEY not in environment; falling back to hardcoded value.
[Wed Nov 23 15:56:38.189717 2016] [:error] [pid 15708] RDS_DB_NAME not in environment; falling back to sqlite
[Wed Nov 23 15:56:38.189751 2016] [:error] [pid 15708] AWS_STORAGE_BUCKET_NAME not in environment; falling back to local static storage.
Run Code Online (Sandbox Code Playgroud)
同样,这些变量是在设置中设置的,它们与EB给我的任何其他报告工具一起显示。它们只是没有设置时间,以便Django在启动和读取时读取它们settings.py
。
python django amazon-web-services django-rest-framework amazon-elastic-beanstalk