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