本番の Auto Scaling グループ(ASG)内の EC2 インスタンスが繰り返し EC2 ステータスチェックに失敗し、ASG によって自動終了されています。インスタンスが終了される前に AWS Systems Manager(SSM)Run Command で診断スクリプトを実行して結果を S3 に保存し、その後でインスタンスを終了させる自動化パイプラインを実装したいと考えています。処理の順序と完了を確実に保証できる最も適切なアーキテクチャはどれですか?
ASG ライフサイクルフック(Lifecycle Hook)は、インスタンスが実際に終了される前に処理を割り込ませる AWS 公式の仕組みです。`EC2_INSTANCE_TERMINATING` フックによりインスタンスは `Terminating:Wait` 状態で保持され、Step Functions が SSM Run Command の完了を待機後に `complete-lifecycle-action` を呼び出すことで処理の順序と完了を保証します。 選択肢A は SSM Run Command の非同期完了と EC2 終了の順序が保証されません。 選択肢C の固定待機時間はスクリプト完了の保証にならず、不確実な制御になります。 選択肢D の SSM Automation から ASG API 呼び出しはライフサイクル管理外となり競合状態のリスクがあります。