無限ノック › SOA 練習問題一覧 › 問題
SOA信頼性とビジネス継続性

EC2 Auto Scalingグループで動作する機密データ処理アプリケーションがあります。スケールインイベント発生時、インスタンス上で実行中のジョブが完全に終了してからインスタンスを終了させる必要があります(ジョブは最大15分かかる場合があります)。ジョブ完了後にはSNSトピックへの通知も必要です。最も運用負荷の低い設計はどれですか?

A
CloudWatchアラームでスケールインイベントを検知し、SSM Run Commandでジョブ終了スクリプトを実行する
CloudWatchアラームでスケールインを検知しSSM Run Commandを実行する方式は、終了処理とジョブ完了確認の連携が複雑で、ジョブが完全終了するまでインスタンス終了を確実に遅延させる仕組みがなく、運用負荷も高くなります。
B
Auto Scalingライフサイクルフック(Terminating:Wait)を設定し、EventBridge経由でLambdaを起動してジョブ完了確認後にCompleteLifecycleActionを呼び出しSNS通知を送る
✓ 正解
Auto Scalingライフサイクルフックは終了前にTerminating:Wait状態で最大数時間保留でき、EventBridgeでLambdaを起動してジョブ完了を確認後にCompleteLifecycleActionを呼び、SNS通知まで含めAWSネイティブに自動化できるため最も運用負荷が低い設計です。
C
インスタンスのUserDataにシャットダウンスクリプトを追記し、ジョブ終了を待ってからOSのhaltコマンドを実行する
UserDataはインスタンス起動時に実行されるスクリプトでOSレベル操作に留まり、Auto Scalingの終了プロセスと連携しません。終了猶予の確実な確保やジョブ完了後のSNS通知の実装が難しく要件を満たせません。
D
Auto Scalingのインスタンス保護(スケールイン保護)を有効にし、アプリケーション側でジョブ完了時にEC2 APIを呼び出して保護を解除する
スケールイン保護はインスタンスがスケールインで終了されるのを防ぐ機能ですが、アプリ側がEC2 APIを直接呼んで保護解除する必要があり疎結合になりません。ジョブ完了通知も別途実装が必要で運用負荷が高くなります。

解説

Auto Scalingライフサイクルフックは、インスタンス終了前にTerminating:Wait状態で最大数時間の保留が可能です。EventBridgeでLambdaをトリガーしジョブ完了確認後にCompleteLifecycleActionを呼ぶことで、AWSネイティブな完全自動化が実現できます。 選択肢A: CloudWatch+SSMの組み合わせは連携が複雑。 選択肢C: UserDataはOSレベル操作でAuto Scalingと非連携。 選択肢D: インスタンス保護方式はアプリがAWS APIを直接呼ぶ必要があり疎結合になりません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSOAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SOA の問題一覧に戻る