Elastic Beanstalk(以下EB)のプラットフォームフックとして.platform/hooks
と.platform/confighooks
が用意されています。ドキュメントサンプルなどでは、両ディレクトリに同じスクリプトファイルを設置しており違いがよくわからなかったため、両者の違いについての学んだことを残しておきます
プラットフォームフックとは?
- EBプラットフォームを拡張するために特別に設計された機能
- プラットフォーム:オペレーティングシステム (OS)、ランタイム、ウェブサーバーなど
- アプリケーションのソースコードに設置することによって、カスタムスクリプトをインスタンスプロビジョニングのあらゆるタイミングで実行できる
- カスタムスクリプト(フックファイル) : バイナリファイルなど
#!
で始まるスクリプトファイル (#!/bin/bash
など)
- カスタムスクリプト(フックファイル) : バイナリファイルなど
- 設置したサブディレクトリによって実行するタイミングを指定できる
-
.platform/hooks/prebuild
、.platform/confighooks/postdeploy
など - タイミングの詳細は「インスタンスデプロイワークフロー」を参照
-
- Amazon Linux 2 より前のバージョンでは使用できない
.platform/hooks
と.platform/confighooks
の違いは?
▼簡潔に言うと
.platform/hooksはアプリケーションデプロイ時、.platform/confighooksは設定変更時
.platform/hooks
: アプリケーションのデプロイプラットフォームフック
eb deploy
などインスタンスの終了や再起動が必要な場合に発生する
.platform/confighooks
: 設定デプロイプラットフォームフック
AWS CLIやEBコンソールから設定を変更した時など、インスタンスの再作成せずに更新だけする設定変更を行った場合に発生する
おまけ
両ディレクトリで同じスクリプトを使用したい場合はシンボリックリンクを貼る
.platform/hooksと.platform/confighooksで同じスクリプトを使用したい場合はシンボリックリンクを貼っても動作する
cd .platform/hooks/predeploy
ln -s /.platform/confighooks/predeploy/01_extension.sh 01_extension.sh
設定を更新したときのローリング設定
アプリケーションデプロイと同じように設定デプロイ時にもローリングを設定できる。何も設定しないで設定を更新するとアプリケーションサーバーの再起動などでダウンタイムが発生する可能性があるので、忘れずに設定を行う
▼設定方法
EBコンソールで対象の環境へ行き、ナビゲーションペインから設定 > ローリング更新とデプロイを選択。設定の更新セクションにてローリングデプロイ設定をする
参考