AWS CodeDeployのライフサイクルフックを各デプロイメントタイプ別に主要な機能と用途をまとめました。
1. EC2/オンプレミスデプロイメント
フック名 | タイミング | 主な用途 |
---|---|---|
ApplicationStop | 古いアプリケーション停止時 | 現在稼働中の古いバージョンを停止する |
DownloadBundle | コード取得時 | 新しいアプリケーションコードをダウンロードする |
BeforeInstall | インストール前 | バックアップ作成や事前準備(例:ファイルの暗号解除)を実施 |
Install | インストール時 | 新しいコードやファイルを実際にインストールする |
AfterInstall | インストール後 | インストール後の設定変更や権限付与などの調整を行う |
ApplicationStart | 起動時 | 新しいアプリケーションを起動する |
ValidateService | 検証時 | デプロイが正しく完了したか、動作確認を行う |
2. ECSデプロイメント(ブルー/グリーンデプロイ)
フック名 | タイミング | 主な用途 |
---|---|---|
BeforeInstall | 新タスクセット作成前 | 新しいタスクセット作成前の準備を行う |
AfterInstall | 新タスクセット作成後 | タスクセット作成後に初期設定や確認処理を実施 |
AfterAllowTestTraffic | テストトラフィック開始後 | テスト環境で新タスクセットの動作確認を行う |
BeforeAllowTraffic | 本番トラフィック移行前 | 本番環境へ移行する前の最終確認を実施 |
3. Lambdaデプロイメント
フック名 | タイミング | 主な用途 |
---|---|---|
BeforeAllowTraffic | トラフィック移行前 | 新しいLambda関数の動作確認や準備を実施 |
AfterAllowTraffic | トラフィック移行後 | デプロイ後、実際のトラフィック下での動作確認を行う |
4. Auto Scalingとの連携(Auto Scalingライフサイクルフック)
フック名 | 用途 | 説明 |
---|---|---|
起動フック | インスタンス起動時 | 新しいインスタンスが起動した際に、初期設定やカスタム処理を実行する |
終了フック | インスタンス終了時 | インスタンス終了前に、クリーンアップなどの後処理を実施する |
キーポイントまとめ
-
EC2/オンプレミス:
古いアプリケーションを停止(ApplicationStop)→ 新コードの取得(DownloadBundle)→ インストール前準備(BeforeInstall)→ インストール(Install)→ インストール後調整(AfterInstall)→ アプリケーション起動(ApplicationStart)→ 動作検証(ValidateService)。 -
ECS:
新しいタスクセットの作成前後やトラフィック移行時に適切な処理を挟むことで、ブルー/グリーンデプロイを安全に実施。 -
Lambda:
トラフィックの移行前後で検証を行い、デプロイの成功を確認。 -
Auto Scaling:
インスタンスの起動・終了時にカスタム処理を実施するための仕組みで、CodeDeployのイベントとは異なる。