DVAデプロイ
開発者が AWS CodeDeploy を使い、EC2 インスタンス群へ Web アプリケーションを In-place(インプレース)デプロイしています。新しいリビジョンを配置した後、アプリケーションプロセスを起動し、ロードバランサーがトラフィックを戻す前にヘルスチェック用スクリプトで正常性を検証したいと考えています。AppSpec ファイルでこの検証スクリプトを指定すべきライフサイクルフックはどれですか。
AApplicationStart フックでアプリを起動した後、ValidateService フックで検証スクリプトを実行する
✓ 正解
In-place デプロイのフック順は ApplicationStart の後に ValidateService が実行される。ApplicationStart で起動し、専用の検証フックである ValidateService で正常性を確認する流れが CodeDeploy の設計に合致するため正しい。
BBeforeInstall フックで検証スクリプトを実行し、失敗時にインストールを中止する
BeforeInstall はリビジョンのファイル配置より前に走るフックで、この時点ではアプリが未配置・未起動。起動後のヘルスチェックを行う用途には使えず、検証スクリプトの配置先として誤り。
CAfterInstall フックでアプリ起動と検証を同時に行い、DownloadBundle フックでロールバックする
DownloadBundle はバンドル取得用に CodeDeploy が予約するフックでカスタムスクリプトを書けず、AfterInstall に起動と検証を詰め込むのも責務分離として不適切。専用の ValidateService を使うべき。
DBeforeAllowTraffic フックで検証し、ApplicationStop フックでアプリを起動する
BeforeAllowTraffic はロードバランサー連携の Blue/Green 等で使うフックで、ApplicationStop は起動ではなく旧プロセス停止用。順序も役割も逆転しており In-place の検証手順として誤り。
解説
CodeDeploy の EC2/オンプレ In-place デプロイのライフサイクルは、ApplicationStop → BeforeInstall → AfterInstall → ApplicationStart → ValidateService の順に進む。ApplicationStart でアプリを起動し、その直後の ValidateService フックがサービスの正常性を検証するための専用フックであり、ここで失敗すればデプロイは失敗扱いとなりロールバックできる。
選択肢Bの BeforeInstall はファイル配置前のため、起動後の検証には使えない。
選択肢Cの DownloadBundle と AfterInstall は CodeDeploy が予約・制御するフックで、AfterInstall に起動と検証を詰め込むのは適切な分離ではない。
選択肢Dの BeforeAllowTraffic はロードバランサーを使う Blue/Green 系のフックで、In-place の標準シーケンスとは順序が逆になっている。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →