WebアプリケーションチームがAWS CodeDeployを使用してEC2インスタンスへのデプロイを設定しています。デプロイ中に以下の3つの処理を実行する必要があります。 ①新しいファイルがコピーされる前に、現在稼働中のWebサーバーを停止する ②新しいファイルがインストールされた後に、データベーススキーマのマイグレーションスクリプトを実行する ③アプリケーション起動後にヘルスチェックエンドポイントへのリクエストが正常に返ることを確認する これらの処理をAppSpec.ymlで定義する際、正しいライフサイクルイベントフックの組み合わせとして適切なものはどれですか?
CodeDeployのEC2/オンプレミスデプロイにおけるライフサイクルイベントの正しい使い方が問われています。 ApplicationStopは、新しいリビジョンのダウンロードが始まる前に実行されるフックで、現在稼働中のアプリケーションやWebサーバーを停止するために使用します。AfterInstallは、新しいファイルがEC2インスタンスにコピーされた直後に実行されるフックで、データベースマイグレーションや設定ファイルの変更など、インストール後の処理に最適です。ValidateServiceはApplicationStartの後に実行される最終フックで、デプロイされたアプリケーションが正常に動作していることを確認します。 選択肢AのBeforeInstallはファイルコピー前の前処理(ファイル復号化など)に使うフックであり、稼働中のWebサーバー停止にはApplicationStopが適切です。 選択肢CのApplicationStartはアプリケーション起動コマンドを実行するフックであり、DBマイグレーションの実行場所としては不適切です。 選択肢DはBeforeInstallとApplicationStartの組み合わせで、3つの要件のいずれに対しても適切なマッピングになっていません。