無限ノック › SAA 練習問題一覧 › 問題
SAA弾力性に優れたアーキテクチャの設計

ある企業が毎日深夜0時に10,000件のレポート生成ジョブを実行する必要があります。各ジョブは独立した Lambda 関数(タイムアウト: 5分)で処理されます。以下の要件を満たす最も適切な構成はどれですか? ・Lambda の同時実行数上限(アカウント: 1,000)を超えないよう流量を制御する ・失敗したジョブを自動でリトライさせる

A
Amazon EventBridge Scheduler から直接 Lambda を10,000件並列起動し、リザーブドコンカレンシーを1,000に設定してスロットリングが発生したリクエストをドロップする。
EventBridge Scheduler から Lambda を直接並列起動する場合、リザーブドコンカレンシーを超えたリクエストはスロットリングエラー(429)としてドロップされます。リトライ機構がなくジョブが消失するリスクがあるため適切ではありません。
B
Amazon EventBridge Scheduler から Amazon SQS キューに10,000件のメッセージを送信し、Lambda のイベントソースマッピングで最大同時実行数を設定して段階的に消費させる。
✓ 正解
SQS キューをバッファとして挟むことで、Lambda のイベントソースマッピングの最大同時実行数設定により流量を安全に制御できます。失敗メッセージは可視性タイムアウト後に自動リトライされ、最終的に DLQ に隔離されます。
C
AWS Step Functions の Map ステートを使用して10,000件を並列実行し、MaxConcurrency を1,000に設定して同時実行数を制御しながらエラー時は Retry ポリシーで再試行する。
Step Functions の Map ステートで MaxConcurrency を設定する方法も機能しますが、10,000件分の実行履歴がステートマシン内に保持されるため、ストレージコストと状態管理の複雑性が増し SQS パターンより高コストになります。
D
AWS Batch のスケジュールジョブキューを使用し、コンピューティング環境の vCPU 上限で並列数を制御しながら、Lambda の代わりに ECS コンテナタスクで各ジョブを処理する。
AWS Batch は選択肢 D の記述通り ECS コンテナタスクへの移植を前提としており、既存の Lambda 関数をそのまま活用できる SQS パターンと比べて変更範囲が大きく採用理由がありません。

解説

EventBridge Scheduler → SQS → Lambda のパターンは、スケジュール実行における流量制御と自動リトライを最もシンプルに実現します。SQS がバッファとして機能し、Lambda イベントソースマッピングの「最大同時実行数(Maximum Concurrency)」設定によって Lambda 同時実行数上限を超えないよう制御できます。SQS の可視性タイムアウトとデッドレターキュー(DLQ)により、処理失敗メッセージの自動リトライと未処理メッセージの隔離も標準機能で実現できます。 選択肢AのEventBridge Scheduler から直接 Lambda を並列起動する方法は、リザーブドコンカレンシーを超えた分はスロットリングエラーとなりジョブがドロップされるため、リトライ機構が機能しません。 選択肢CのStep Functions Map ステートも有効なアプローチですが、10,000件分の実行履歴を保持するためコストが高く、SQS パターンと比較して運用コストと複雑性が増大します。 選択肢DのAWS Batch は大規模バッチコンピューティング向けですが、選択肢 D は Lambda から ECS コンテナタスクへの移植を前提としており、既存 Lambda 関数をそのまま活用できる SQS パターンと比べて変更範囲が大きすぎます。

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

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

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