LoginSignup
33
27

More than 5 years have passed since last update.

ElasticBeanstalk で環境変数を利用する

Last updated at Posted at 2014-12-11

.ebextensions など ElasticBeanstalk で、Software Configuration などで設定した環境変数を参照したい場合のやり方メモ。
(最後に確認したのがかなり前なので、もしかしたら現在はこのままでは動作しないかもしれないです)

スクリーンショット 2014-12-11 10.24.10.png

環境タイプ: Docker

現在の方法

以前は /opt/elasticbeanstalk/hooks/common.sh に書かれていた設定ファイルを参照して直接読み出していたけれど、最近 EB の AMI のバージョンをあげたところうまく動かなくなっていた(ami-4aedea4b で確認)。

デプロイ用のスクリプトが使っていたツールを発見したので、これを使わせてもらうことにします。

ちなみに環境変数が含まれた、コンテナのコンフィグファイルを直接参照したい場合はここにあります。

/opt/elasticbeanstalk/deploy/configuration/containerconfiguration

その1: /opt/elasticbeanstalk/bin/get-config を使う

たとえば AWS_ACCESS_KEY_ID を取得したい場合は以下。

# 要 root 権限
AWS_ACCESS_KEY_ID=$(/opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:application:environment -o AWS_ACCESS_KEY_ID)

その2: /opt/elasticbeanstalk/containerfiles/support/generate_env を使う

generate_env を使えば、設定された環境変数を一度に取得することができます。

# 要 root 権限
while read -r ENV; do
    export $ENV
done < <(/opt/elasticbeanstalk/containerfiles/support/generate_env)

ただし support ディレクトリが可変な雰囲気だったので、実際に使用する場合は下記のように get-config を使って support ディレクトリを取得したほうがいいかもしれません。

SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_files_dir)
while read -r ENV; do
    export $ENV
done < <(${SUPPORT_DIR}/generate_env)

番外編: 以前の方法

上記を適用するまでは以下を使用していました。

source /opt/elasticbeanstalk/hooks/common.sh

touch /tmp/env.sh
chmod 600 /tmp/env.sh
jq .docker.env[] $EB_CONFIG_FILE | tr -d \" > /tmp/env.sh
source /tmp/env.sh
rm /tmp/env.sh

こちらの方法は、Amazon S3をDockerプライベートレポジトリにしてAWS ElasticBeanstalk環境にデプロイ で紹介されていたやり方です。

環境タイプ: Multi-container Docker

コメントで教えていただいた方法ですが、 Multi-container Docker の場合は下記の方法で環境変数を取得可能なようです。

jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" <(/opt/elasticbeanstalk/bin/get-config environment) > /tmp/envs
. /tmp/envs
33
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
27