NT3*_*3RP 12 python environment-variables amazon-web-services amazon-elastic-beanstalk
我最近一直在研究Django应用程序,试图让它与Amazon Elastic Beanstalk一起使用.
在我的.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
Run Code Online (Sandbox Code Playgroud)
但是,每当我查看服务器时,都没有设置这样的环境变量(因此,当我尝试时无法访问) os.getenv('ProductionBucket')
我遇到了这个页面似乎试图记录所有命名空间.我也尝试使用PARAM1
作为选项名称,但有类似的结果.
如何在Amazon Elastic Beanstalk中设置环境变量?
编辑:
我还尝试在所有其他命令之前添加命令,这些命令只会导出一个环境变量:
commands:
01_env_vars:
command: "source scripts/env_vars"
Run Code Online (Sandbox Code Playgroud)
......这也不成功
idr*_*bst 17
我遇到了同样的问题.
信不信由你,你必须在部署之前将.ebextensions目录和所有*.config文件提交到版本控制,以便它们在服务器上显示为环境变量.
为了使您的敏感信息不受版本控制,您可以使用如下配置文件:
option_settings:
- option_name: API_LOGIN
value: placeholder
- option_name: TRANS_KEY
value: placeholder
- option_name: PROVIDER_ID
value: placeholder
Run Code Online (Sandbox Code Playgroud)
然后编辑AWS管理面板(环境详细信息 - >编辑配置 - >容器)并更新其中的值
小智 5
我执行了以下操作以获取我在非容器阶段在 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())))"
Run Code Online (Sandbox Code Playgroud)
执行此命令后,您将在 /tmp/eb_env 中拥有一个包含所有环境变量的文件。只需在需要环境变量的命令之前执行以下命令
source /tmp/eb_env
Run Code Online (Sandbox Code Playgroud)
例子
source /tmp/eb_env && echo $MY_CUSTOM_ENV
Run Code Online (Sandbox Code Playgroud)
在elastic beanstalk的配置文件中,是这样的:
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())))'"
Run Code Online (Sandbox Code Playgroud)
小智 5
选项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
.
我已经检查过使用现代(即非遗留)容器,并在 /opt/elasticbeanstalk/deploy/configuration/containerconfiguration 下发现它作为 json 文件。
行为似乎与平台相关:我特别记得在 PHP 中,它还创建了一些带有值的 shell 脚本。
不管怎样,请查看 /opt/elasticbeanstalk/hooks/configdeploy。
又是 Java 的情况,它运行这个 python 脚本,这对你来说看起来很方便:
https://gist.github.com/19c1e4b718f9a70a4ce1
归档时间: |
|
查看次数: |
15746 次 |
最近记录: |