如何设置Amazon弹性魔豆的环境变量(蟒蛇)(How to set an environment

2019-07-17 22:41发布

我一直在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)