ある企業はAWS CodeDeployを使用してEC2インスタンスへアプリケーションをデプロイしています。デプロイ完了後にHTTPエンドポイントへリクエストを送信して応答コードを確認するスモークテスト(アプリケーションが最低限正常に動作しているか確認する軽量テスト)を自動実行し、テストが失敗した場合は自動的にデプロイをロールバックしたいと考えています。appspec.yml のどのライフサイクルフックにスモークテストスクリプトを設定すべきですか?
ValidateServiceはCodeDeployのEC2/オンプレミスデプロイにおける最後のライフサイクルフックであり、アプリケーション起動後に実行されます。このフックでスクリプトが非ゼロの終了コードを返すと、CodeDeployはデプロイを失敗とマークし、自動ロールバックが有効な場合はロールバックを実行します。スモークテストのようなデプロイ後の動作検証に最適なフックです。 選択肢AのAfterInstallはアプリケーション起動前に実行されるため、HTTPエンドポイントへの疎通確認には使えません。 選択肢BのApplicationStartはアプリケーションを起動するためのフックであり、起動後の動作検証には使いません。 選択肢DのBeforeBlockTrafficはBlue/Greenデプロイでトラフィックを旧インスタンスから遮断する前に実行されるフックであり、デプロイ後のスモークテストには不適切です。