web-dev-qa-db-ja.com

Elastic Beanstalk .ebextensions設定ファイルから環境変数を参照する

.ebextensions構成ファイルからPARAM1/PARAM2などのコンテナー環境プロパティーを参照することは可能ですか?もしそうなら、どのように? $ PARAM1を試しましたが、空の値のようです。

起動時にホスト名をDEV、QA、またはPRODを含むように設定します。これをPARAM1環境変数を介してコンテナに渡します。

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

commandsセクションではなく、container_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 を参照してください。

26
Kevin

ここに私のために働いたものがあります。私は受け入れられたアプローチを試みましたが、望ましい結果が得られませんでした(中括弧は出力に含まれていました)。 Elastic Beanstalkにアップロードするときに.configファイルから実行されるコマンドのトラブルシューティングも少し難しいです(またはどこを探すべきか正確にわかりません)。

AWS環境:

  • タイプ-Elastic Beanstalk
  • プラットフォーム-64ビットAmazon Linux 2015.09 v2.0.4実行中PHP 5.6

Elastic Beanstalk環境プロパティ(設定->ソフトウェア設定->環境プロパティ):

  • プロパティ名-HELLO_VARIABLE
  • プロパティ値-テスト

デプロイメントアーティファクトの.ebextensionsフォルダーに含まれるサンプル.configファイル:

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ディレクトリには次のファイルが含まれます(中括弧と$の位置に注意)。

  • touch $ {HELLO_VARIABLE} _0_.txt作成/ tmp/test_0_.txt
  • touch {$ HELLO_VARIABLE} _1_.txt作成/ tmp/{test} _1_.txt
  • touch $ HELLO_VARIABLE_2_.txt作成/ tmp/.txt
10
Maciej

コマンドの段階で環境変数を使用できるようにするために、環境変数を解析して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

後続のコマンドで。

7
gilesw

受け入れられた答えはかなり時代遅れです。

これで、/opt/elasticbeanstalk/support/envvarsファイルを使用できます。このファイルは、既にソースとして準備ができているシェルスクリプトです。

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:には含まれていません。

7
Roman Zhuzha

このブログでは、これを実現する方法に関するさまざまなオプションについて詳しく説明しています。

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

0
Chacko Mathew