Elastic Beanstalk へ CI からデプロイ時に特定コンフィギレーションをスキップするには

CI サービスから自動的に AWS Elastic Beanstalk にアプリケーションをデプロイしたいときに .ebextensions フォルダに置いたコンフィギレーションファイルをスキップさせたいときがある。

awsebcli の eb deploy コマンドでは、Git リポジトリのカレントブランチの HEAD コミットをアーカイブしてアップロードする。Elastic Beanstalk (以下、EB) の仕様上、EB 環境毎に EC2 インスタンスの設定(.ebextensions)をデプロイ処理時に切り分けるには、container_commands において環境変数を参照して行うしかない。それ以前に走る files や Resources の設定は固定になってしまう。

eb deploy コマンドの --staged オプションを指定すると、Git リポジトリの staged 状態を反映してアーカイブを作成してくれる。 つまり特定の設定ファイルをスキップしたければ git rm .ebextensions/skip.config を行ってから、eb deploy --staged target-eb-env を叩くようにすれば良いのだ。

例えば CI サービスの設定 yaml などに次のように定義する。

- git rm .ebextensions/skip.config
- eb deploy --staged target-eb-env

特定の処理を追加したいときは別の場所に設定ファイルを用意しておいて、git mv で .ebextensions フォルダに移動すると良いだろう。

- git mv other-ebextensions/add.config .ebextensions
- eb deploy --staged target-eb-env