我一直在Django应用程序最近,试图让它与Amazon弹性青苗工作。
在我.ebextensions/python.config
文件,我已经设置了以下内容:
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: ProductionBucket
value: s3-bucket-name
- namespace: aws:elasticbeanstalk:application:environment
option_name: ProductionCache
value: memcached-server.site.com:11211
但是,每当我期待在服务器上,没有这样的环境变量设置(正因为如此,不能访问时,我尝试os.getenv('ProductionBucket')
我碰到这个本页面这似乎试图记录所有的命名空间。 我已经使用也试过PARAM1
作为选项名称,但也有类似的结果。
我如何可以设置Amazon弹性魔豆环境变量?
编辑 :
我也尝试添加一个命令之前,这将只是出口环境变量的所有其他命令:
commands:
01_env_vars:
command: "source scripts/env_vars"
......这也是不成功
Answer 1:
我已经使用了现代的(即非传统的)容器检查,并发现它在/ opt / elasticbeanstalk /部署/配置/ containerconfiguration作为一个JSON文件。
该行为似乎是依赖于平台的:我记得在PHP特别是它也创造与价值的一些shell脚本。
无论是,看看到/ opt / elasticbeanstalk /钩/ configdeploy。
Java的情况下再次,它运行这个python脚本,它看起来非常方便为您提供:
https://gist.github.com/19c1e4b718f9a70a4ce1
Answer 2:
我有同样的问题。
信不信由你,你有你为了部署之前提交.ebextensions目录和所有* .config文件版本控制为他们显示为服务器上的环境变量。
为了使您的敏感信息进行版本控制,你可以使用这样的配置文件中:
option_settings:
- option_name: API_LOGIN
value: placeholder
- option_name: TRANS_KEY
value: placeholder
- option_name: PROVIDER_ID
value: placeholder
有(>集装箱环境细节 - - >编辑配置)和更新的值,然后在以后编辑AWS管理面板
https://stackoverflow.com/a/14491294/274695
Answer 3:
选项1:
您可以通过设置环境变量eb setenv FOO=bar
您可以通过查看环境变量eb printenv
选项2:
你可以创建一个在您.ebextensions目录中的配置文件,例如00_environment.config
。 然后,添加这样的环境变量:
option_settings: - option_name: MY_FIRST_ENV_VAR value: abc - option_name: ANOTHER_ENV_VAR value: 123
但是,如果您有多个环境中,我发现,这是比较有用的,直接设置环境变量,使用选项#1。
我还发现了eb config
命令是有帮助的: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-config.html
这些命令让你得到,放置,列出,或在您的EB环境中删除配置文件。
该命令eb config get
将节省你的配置,包括环境变量,在本地文件.elasticbeanstalk/saved_configs
。
Answer 4:
我做了以下也得到我的环境变量,我在非容器相配置cloudformation,例如常规命令
/opt/elasticbeanstalk/bin/get-config environment | python -c "import json,sys; obj=json.load(sys.stdin); f = open('/tmp/eb_env', 'w'); f.write('\n'.join(map(lambda x: 'export ' + x[0] + '=' + x[1], obj.iteritems())))"
一旦你执行这个命令你会在你的所有的环境变量的/ tmp / eb_env文件。 需要环境变量的命令之前,只需要执行以下
source /tmp/eb_env
例
source /tmp/eb_env && echo $MY_CUSTOM_ENV
在弹性豆茎的配置文件,它看起来像这样:
commands:
02-make-sure-we-can-get-our-env-in-the-instance-itself:
command: "/opt/elasticbeanstalk/bin/get-config environment | python -c 'import json,sys; obj=json.load(sys.stdin); f = open(\'/tmp/eb_env\', \'w\'); f.write(\'\n\'.join(map(lambda x: \'export \' + x[0] + \'=\' + x[1], obj.iteritems())))'"
Answer 5:
要在本地运行设置变量,你可以做到以下几点:
eb local setenv CONFIG=dev
eb local run
这也适用于码头工人MultiContainers,否则将无法看到您的环境。
文章来源: How to set an environment variable in Amazon Elastic Beanstalk (Python)