はじめに
AWS Elastic Beanstalk の環境変数を AWS CLI で設定する方法のメモ。
AWS Elastic Beanstalk の環境変数はいろんな方法で設定できる
AWS Elastic Beanstalk の環境変数を設定する方法はいくつかある。
個人的には ebextensions が最推しで、次点で AWS CLI というところ。 (ただし、ebextensions で環境変数を管理している場合、環境変数は ebextensions だけで管理し、その他の方法では変更しないのが鉄則)
その他の2つについては、以下の理由によりほとんど使っていない。
- マネージメントコンソールを開いての作業はしたくない
- EB CLI は最初に init したり等の準備が必要で、意外と面倒くさい
個人的には ebextensions が最推しだが、すでにマネージメントコンソールで環境変数を設定する運用になっていたり、とりあえずサッと環境変数を設定して動作を見てみたい、というときには 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 コマンドを使うほうが楽だろう。
参考サイト
- Elastic Beanstalk 環境から Linux および Windows インスタンスに変数を渡す
- update-environment — AWS CLI 2.7.11 Command Reference
- describe-configuration-settings — AWS CLI 2.7.11 Command Reference
- environment-updated — AWS CLI 2.7.11 Command Reference
- describe-environments — AWS CLI 2.7.11 Command Reference
- [小ネタ] ElasticBeanstalkのアプリケーション環境変数をCSVで出力 | DevelopersIO