SAA-C03高パフォーマンスなアーキテクチャの設計MEDIUM単一選択

ある企業が、AWS Lambda 関数で大量の S3 オブジェクト(1 ファイル 500KB 程度、1 バッチで 10,000 件)を並列処理したい。処理の進捗を追跡し、すべての処理が完了した後に集計処理を実行したい。最小限のコードで実現できる最も適切なオーケストレーション手段はどれか。

  1. A. AWS Step Functions の Map ステートを使用して、10,000 件のアイテムを並列処理し(maxConcurrency を設定)、すべての処理完了後に集計ステートに遷移する。
  2. B. Amazon SQS に 10,000 件のメッセージを送信し、Lambda を SQS トリガーで実行する。別の Lambda 関数が SQS キューを定期的にポーリングして残件数が 0 になったら集計処理を起動する。
  3. C. EC2 インスタンスで 10,000 個のスレッドを使って並列処理する。
  4. D. Amazon EventBridge でスケジュールルールを作成して 10,000 件の Lambda を起動し、CloudWatch メトリクスで完了を検知する。
解答と解説を見る

正解: A

AWS Step Functions の Map ステートは配列の各要素に対して並列処理を実行し、すべての処理完了を自動的に待機してから次のステートに遷移する。maxConcurrency で同時実行数を制御でき、エラーハンドリングも宣言的に設定できる。10,000 件の並列処理と集計の「オーケストレーション」にはStep Functions が最適解。選択肢BのSQS + Lambda も有効だが、「全件完了後に集計」を正確に実装するには DynamoDB などでカウンターを管理するカスタムロジックが必要で、コード量が多くなる。選択肢DのEventBridge スケジュールは一度のバッチ起動とリアルタイム完了検知には向かない。設計も複雑になる。選択肢CのEC2 マルチスレッドはサーバーレスの利点を失い、インスタンス管理コストも発生する。10,000 スレッドの同時実行はリソース管理が困難。

▸ この試験を本気で演習する(全150問・無料)