グラファイト サーバーとポート (メトリックを送信するため) を指定する必要があるスプリング ブート アプリケーションがあります。それが機能するには、 をインストールして構成する必要がありますstatsd
。私はebextensions
ファイルを使用してそれを行います。
commands:
01_nodejs_install:
command: sudo yum -y install nodejs npm --enablerepo=epel
ignoreErrors: true
02_mkdir_statsd:
command: mkdir /home/ec2-user/statsd
ignoreErrors: true
03_fetch_statsd:
command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
ignoreErrors: true
04_change_example_config:
command: "cat exampleConfig.js | sed 's/2003/<graphite-port>/g' | sed 's/graphite.example.com/<my-graphite-server>/g' > config.js"
cwd: /home/ec2-user/statsd
05_run_statsd:
command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null &
cwd: /home/ec2-user/statsd
この構成の問題は、ここですべての環境に対して 1 つのグラファイト サーバーしか指定できないことです。
そこで、コマンド 04 と 05 を に移動することにしましたcontainer_commands
。ENV_NAME
Beanstalk コンソール/UI を使用して呼び出される環境変数を定義し、環境に応じてdev
、qa
、またはに設定することをprod
考えています。次に、これに基づいて特定の環境に対してのみ 04 および 05 コマンドを実行するtest
オプションを使用できます。container_commands
ENV_NAME
だから私の問題は - AWS コンソールを使用して環境変数を定義するにはどうすればよいですか? こちらのドキュメントで説明されているように、Beanstalk コンソールを使用して変数を定義しようとしまし たが、うまくいきませんでした。また、このメソッドは JVM プロパティのみを設定し、ENV 変数は設定しないこともわかりました(5 票の回答を参照)。
同じ問題が発生するため、を使用して環境変数を定義ebextensions
できません-異なる環境に対して異なる環境変数を定義できません:)
したがって、次のいずれかについて助けが必要です。
ENV_NAME
Beanstalk UI を使用して環境変数を設定します。
または
- の値に基づいてコマンドを実行するかどうかを条件付けるため
ENV_NAME
に、 でシステム プロパティを使用する方法を提案します。container_commands
ENV_NAME
また、環境ごとに異なる Graphite サーバーを指定するためのより簡単で優れた方法をご存じの場合は、お気軽にお問い合わせください。