あるECサイトのAuto ScalingグループはALB(Application Load Balancer)配下のEC2インスタンスでWebアプリケーションを実行しています。スケールイン(インスタンス縮小)発生時に処理中のHTTPリクエストが突然切断され、ユーザーに接続エラーが表示されています。調査の結果、Auto ScalingがインスタンスをTerminatingに移行すると同時にOSプロセスが終了していることが判明しました。 以下の順序でグレースフル終了を実現する構成として最も適切なものはどれですか? ①ALBからの新規リクエスト受付停止 → ②既存リクエストの処理完了 → ③カスタムクリーンアップ(DBコネクションのクローズ等)実行 → ④インスタンス終了
ALBの登録解除遅延はターゲット登録解除後に既存接続が完了するまでALBが待機する時間を設定し① ②を実現します。Auto Scalingライフサイクルフックは「Terminating:Wait」状態でインスタンスを保持し、SSM Run Commandでカスタムクリーンアップスクリプトを実行(③)後にcomplete-lifecycle-actionで終了を完了する(④)。この組み合わせにより、アプリケーションコード変更なしに4段階のグレースフル終了が実現できます。 選択肢Aの終了ポリシー(Termination Policy)は対象インスタンスの選択基準であり終了プロセスの制御とは無関係です。 選択肢Cの SIGTERMハンドラはアプリケーションコード修正が必要で要件を満たしません。 選択肢Dのスケールイン保護のLambda解除は実装が複雑で全リクエスト完了の確実な検知が困難です。