全力で怠けたい

怠けるために全力を尽くしたいブログ。

AWS Elastic Beanstalk の環境変数を AWS CLI で設定する。

はじめに

AWS Elastic Beanstalk の環境変数AWS CLI で設定する方法のメモ。

AWS Elastic Beanstalk の環境変数はいろんな方法で設定できる

AWS Elastic Beanstalk の環境変数を設定する方法はいくつかある。

  • マネージメントコンソール
  • EB CLI
  • AWS CLI
  • ebextensions (option settings)

個人的には ebextensions が最推しで、次点で AWS CLI というところ。 (ただし、ebextensions で環境変数を管理している場合、環境変数は ebextensions だけで管理し、その他の方法では変更しないのが鉄則)

その他の2つについては、以下の理由によりほとんど使っていない。

  • マネージメントコンソールを開いての作業はしたくない
  • EB CLI は最初に init したり等の準備が必要で、意外と面倒くさい

個人的には ebextensions が最推しだが、すでにマネージメントコンソールで環境変数を設定する運用になっていたり、とりあえずサッと環境変数を設定して動作を見てみたい、というときには AWS CLI環境変数を設定することがある。

以下、AWS CLI での環境変数の設定方法を記載する。

AWS Elastic Beanstalk の環境変数AWS CLI で追加・変更する

AWS Elastic Beanstalk の環境変数AWS CLI で追加・変更するには update-environment コマンドを使う。

$ aws elasticbeanstalk update-environment \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名> \
    --option-settings \
    "Namespace=aws:elasticbeanstalk:application:environment,OptionName=CLI_ENV_1,Value=CLI から設定した環境変数_1" \
    "Namespace=aws:elasticbeanstalk:application:environment,OptionName=CLI_ENV_2,Value=CLI から設定した環境変数_2"

--option-settings オプションは以下のように指定する。

項目
Namespace aws:elasticbeanstalk:application:environment
OptionName 環境変数の名前
Value 環境変数の値

describe-configuration-settings コマンドにて環境変数を表示すると、さきほど設定した環境変数がちゃんと反映していることを確認できる。

$ aws elasticbeanstalk describe-configuration-settings \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名> \
    jq -r '.ConfigurationSettings[0].OptionSettings | map(select(.Namespace == "aws:elasticbeanstalk:application:environment")) | .[] | [.OptionName, .Value] | @csv'
"CLI_ENV_1","CLI から設定した環境変数_1"
"CLI_ENV_2","CLI から設定した環境変数_2"

値が空の環境変数を設定する

値が空の環境変数を設定するには、--option-settings オプションにて Value= のように指定する。

$ aws elasticbeanstalk update-environment \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名> \
    "Namespace=aws:elasticbeanstalk:application:environment,OptionName=CLI_ENV_2,Value="

$  aws elasticbeanstalk describe-configuration-settings \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名> \
    jq -r '.ConfigurationSettings[0].OptionSettings | map(select(.Namespace == "aws:elasticbeanstalk:application:environment")) | .[] | [.OptionName, .Value] | @csv'
"CLI_ENV_1","CLI から設定した環境変数_1"
"CLI_ENV_2",""

AWS Elastic Beanstalk の環境変数AWS CLI で削除する

AWS Elastic Beanstalk の環境変数AWS CLI で削除するには、 update-environment コマンドの --options-to-remove オプションを指定する。

--options-to-remove オプションは以下のように指定する。

項目
Namespace aws:elasticbeanstalk:application:environment
OptionName 環境変数の名前

環境変数を削除する例。 環境変数 CLI_ENV_2 が削除されていることを確認できる。

$ aws elasticbeanstalk update-environment \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名> \
    --options-to-remove \
    "Namespace=aws:elasticbeanstalk:application:environment,OptionName=CLI_ENV_2"

$ aws elasticbeanstalk describe-configuration-settings \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名> \
    jq -r '.ConfigurationSettings[0].OptionSettings | map(select(.Namespace == "aws:elasticbeanstalk:application:environment")) | .[] | [.OptionName, .Value] | @csv'
"CLI_ENV_1","CLI から設定した環境変数_1"

おまけ: AWS Elastic Beanstalk の環境への変更が完了するまで待ち合わせる

AWS Elastic Beanstalk の環境への変更が完了するまで待ち合わせるには environment-updated コマンドを使う。

$ aws elasticbeanstalk wait environment-updated \
    --region=<リージョン> \
    --application-name=<アプリ名> \
    --environment-name=<環境名>

describe-environments コマンドとシェルコマンドを組み合わせて environment-updated コマンドと同じことをできるが、environment-updated コマンドを使うほうが楽だろう。

参考サイト