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

ある企業が、AWS Lambda を使ってサードパーティの REST API から毎時間データを取得し、DynamoDB に保存するバッチ処理を実装している。外部 API のレート制限(100 req/秒)を超えないようにしながら、処理時間を最小化したい。最も適切なアーキテクチャはどれか。

  1. A. Lambda 関数を 1 つだけ起動して順番に API を呼び出す。
  2. B. Step Functions の Map ステートで並列処理するが、concurrency を 1 に設定してシリアル処理させる。
  3. C. Lambda 関数を 1,000 台同時に起動して最高速でデータを取得する。
  4. D. Amazon SQS キューに API リクエストパラメータを入れ、Lambda の同時実行数を 100 に制限した SQS トリガーで Lambda を起動する。Lambda は各メッセージで 1 件の API リクエストを実行し、秒あたり最大 100 件の処理を維持する。
解答と解説を見る

正解: D

SQS キューにリクエストパラメータを投入し、Lambda の予約済み同時実行数を外部 API のレート制限(100 req/秒)に合わせて設定することで、APIレート制限を遵守しながら最大限並列処理できる。Lambda の SQS イベントソースマッピングで同時実行数を制御でき、1 Lambda = 1 API コールの設計で秒あたり最大 100 件を維持できる。選択肢Aの単一 Lambda でのシリアル処理は最もレート制限に安全だが、処理時間が非常に長くなり「処理時間最小化」要件を満たさない。選択肢Cの 1,000 台同時起動は外部 API のレート制限(100 req/秒)を大幅に超えてしまい、API エラーが多発する。選択肢BのStep Functions Map ステートの concurrency=1 はシリアル処理と同等で、処理時間が長くなる。

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