引用Elastic Beanstalk .ebextensions配置文件中的env变量

时间:2013-05-16 11:11:12

标签: amazon-web-services elastic-beanstalk

是否可以从.ebextensions配置文件引用PARAM1 / PARAM2等容器环境属性。如果是这样,怎么样?我尝试了$ PARAM1,但它似乎是一个空值。

我想在启动时将主机名设置为包含DEV,QA或PROD,我通过PARAM1环境变量传递给我的容器。

commands:
  01-set-correct-hostname:
    command: hostname myappname{$PARAM1}.com

5 个答案:

答案 0 :(得分:25)

事实证明,您只能在container_commands部分执行此操作,而不是commands部分。

这有效:

container_commands:
  01-set-correct-hostname:
    command: "hostname myappname{$PARAM1}.com"

有关详细信息,请参阅http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-container_commands

答案 1 :(得分:10)

这对我有用。我尝试了接受的方法,但没有产生预期的结果(输出中包含花括号)。上传到Elastic Beanstalk时从.config文件执行的命令排除故障也是一个挑战(或者我只是不确切地知道在哪里查看)。

AWS环境:

  • 类型 - Elastic Beanstalk
  • 平台 - 运行PHP 5.6的64位Amazon Linux 2015.09 v2.0.4

Elastic Beanstalk环境属性(配置 - >软件配置 - >环境属性):

  • 物业名称 - HELLO_VARIABLE
  • 物业价值 - 测试

示例.config文件包含在部署工件中的.ebextensions文件夹中:

container_commands:
  0_test-variable:
    cwd: /tmp
    command: "touch ${HELLO_VARIABLE}_0_.txt"
  1_test-variable:
    cwd: /tmp
    command: "touch {$HELLO_VARIABLE}_1_.txt"
  2_test-variable:
    cwd: /tmp
    command: "touch $HELLO_VARIABLE_2_.txt"

使用Elastic Beanstalk部署工件后,EC2实例中的/ tmp目录将包含以下文件(注意大括号和$的位置):

  • 触摸$ {HELLO_VARIABLE} _0_.txt 创建 /tmp/test_0_.txt
  • 触摸{$ HELLO_VARIABLE} _1_.txt 创建 / tmp / {test} _1_.txt
  • 触摸$ HELLO_VARIABLE_2_.txt 创建 /tmp/.txt

答案 2 :(得分:6)

要在命令阶段使环境变量可用,我将它们解析为bash可源文件。

000001.envvars.config

...
commands:
  000001_envvars_to_bash_source_file:
    command: |
      # source our elastic beanstalk environment variables
      /opt/elasticbeanstalk/bin/get-config --output YAML environment|perl -ne "/^\w/ or next; s/: /=/; print qq|\$_|" > /var/tmp/envvars
      chmod 400 /var/tmp/envvars
...

然后我使用: -

source /var/tmp/envvars

在后续命令中。

答案 3 :(得分:6)

接受的答案已经过时了。

现在您可以使用/opt/elasticbeanstalk/support/envvars文件,该文件已经是准备好来源的shell脚本:

commands:
  01_update_composer:
    command: |
      . /opt/elasticbeanstalk/support/envvars
      /usr/bin/composer.phar self-update

container_commands:
  01_run_composer:
  command: |
    composer.phar install --no-scripts --no-dev  # already has user-specified env variables

<强>更新

经过深入调查后发现container_commands:包含您的环境变量,但commands:没有。

答案 4 :(得分:0)

此博客详细介绍了如何实现这一目标的各种选项。

https://www.onica.com/blog/how-to-call-and-export-variables-in-elastic-beanstalk/