And*_*708 30 amazon-web-services amazon-elastic-beanstalk
我正在尝试访问我在AWS Beanstalk配置中定义的环境变量.我需要在配置文件中.ebextensions 或在配置文件中复制的文件中访问它.我尝试过以下方法:
container_commands:
update_nginx_config:
command: "cp .ebextensions/files/nginx/nginx.conf /etc/nginx/nginx.conf"
Run Code Online (Sandbox Code Playgroud)
而在我的nginx.conf文件,我曾经试图访问$MYVAR,${MYVAR}并且{$MYVAR},其中一些建议在这里和这里(后者直接是一个配置文件内).
files:
"/etc/nginx/nginx.conf" :
mode: "000644"
owner: root
group: root
content: |
$MYVAR ${MYVAR} {$MYVAR}
Run Code Online (Sandbox Code Playgroud)
这也不起作用.在所有情况下,变量名称只是输出$MYVAR,因此Beanstalk无法识别我的变量.我在AWS文档中找到了以下内容container_commands:
他们还可以访问环境变量,例如您的AWS安全凭证.
这很好,但它没有说明如何.
如何使用ebextensions访问环境变量,无论是在配置文件本身内还是在单独复制的文件中?
先感谢您!
And*_*708 49
我联系了亚马逊技术支持部门来回答这个问题,以下是他们的答复:
不幸的是,变量不能直接在ebextensions中使用.这样做的最佳选择是创建一个脚本,然后从容器命令运行,如下所示:
files:
"/home/ec2-user/setup.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
# Commands that will be run on container_commmands
# Here the container variables will be visible as environment variables.
container_commands:
set_up:
command: /home/ec2-user/setup.sh
Run Code Online (Sandbox Code Playgroud)
因此,如果您创建一个shell脚本并通过容器命令调用它,那么您将可以访问shell脚本中的环境变量,如下所示:$ENVIRONMENT_VARIABLE.我测试了这个,它的确有效.
如果您在以root身份运行脚本时遇到问题并且无法读取已配置的环境变量,请尝试将以下内容添加到脚本的顶部.
. /opt/elasticbeanstalk/support/envvars
Run Code Online (Sandbox Code Playgroud)
根据您的使用情况,您可能需要稍微改变一下(至少我做过),但这是一个有效的解决方案.我希望这可以帮助别人!
Dan*_*van 13
从这个答案:https : //stackoverflow.com/a/47817647/2246559
您可以使用此处描述的GetOptionSetting函数:https : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions-functions.html
例如,如果您正在设置worker_processes变量,则它可能类似于:
files:
"/etc/nginx/nginx.conf" :
mode: "000644"
owner: root
group: root
content: |
worker_processes `{"Fn::GetOptionSetting": {"Namespace": "aws:elasticbeanstalk:application:environment", "OptionName": "MYVAR"}}`;
Run Code Online (Sandbox Code Playgroud)
注意函数调用中的反引号``。
小智 10
如果您直接在容器命令中使用该值,get-config实例附带的脚本可以提供帮助。
例子 :
20_install_certs:
command: |
MY_VAR=$(/opt/elasticbeanstalk/bin/get-config environment -k MY_VAR)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11740 次 |
| 最近记录: |