Q60 — AWS SAA-C03 第15章
第 60/100 問 | ← 第15章
Q1160. ある企業は、Amazon API Gateway の REST API の背後で AWS Lambda 関数を実行し、その結果を Amazon DynamoDB テーブルに保存するサーバーレスアプリケーションを運用しています。データベースへのクエリは処理に時間がかかる場合がありますが、API クライアントはクエリ結果を即時に受信する必要はありません。ソリューションアーキテクトは、API の応答時間を短縮し、タイムアウトの問題を回避したいと考えています。これらの要件を満たすソリューションはどれですか?
- A. Amazon Kinesis Data Stream を作成します。REST API エンドポイントを、この Kinesis Data Stream を宛先として設定します。Lambda 関数を、データストリームからレコードを読み取るように設定します。
- B. Amazon Simple Notification Service (Amazon SNS) トピックを作成します。REST API エンドポイントを、この SNS トピックを宛先として設定します。Lambda 関数を、この SNS トピックを購読するように設定します。
- C. Application Load Balancer (ALB) を作成します。ALB を REST API の宛先として設定します。Lambda 関数を ALB のターゲットとして設定します。Application Auto Scaling を使用して、アプリケーションのレイテンシに基づき Lambda のプロビジョンドコンカレンシーをスケールするように設定します。
- D. Amazon Simple Queue Service (Amazon SQS) キューを作成します。REST API エンドポイントを、この SQS キューを直接の宛先として設定します。Lambda 関数を、SQS キューからメッセージを読み取るように設定します。 ✓
正解: D. Amazon Simple Queue Service (Amazon SQS) キューを作成します。REST API エンドポイントを、この SQS キューを直接の宛先として設定します。Lambda 関数を、SQS キューからメッセージを読み取るように設定します。
解説
API クライアントがクエリ結果を即時に必要としないという前提のもとで、API の応答時間を短縮し、タイムアウト問題を回避するには、API 応答とデータベースクエリの実行を非同期的に分離(デカップリング)することが最適です。この目的には、キューを用いた非同期処理が最も適しています。 主な要件: ・API の応答時間を短縮(クライアントは遅いクエリの完了を待つ必要がない) ・タイムアウト問題を回避(Lambda 関数には最大実行時間があり、遅いクエリがこれを超える可能性がある) ・クライアントは結果を必要としないため、API はリクエストをキューに登録した直後に即時応答可能 各選択肢の検討: A. Amazon Kinesis Data Stream:リアルタイムストリーミング(例:ログ収集、IoT テレメトリ)向けであり、単純な非同期タスクキューとしては過剰かつ不適切です。クエリ処理のデカップリングには最適ではありません。 B. Amazon SNS トピック:プッシュ型の通知・アラート配信向けのパブリッシュ/サブスクライブサービスであり、順序保証や正確に1回の処理といったキューの特性を持ちません。信頼性の高い非同期タスク処理には不向きです。 C. Application Load Balancer (ALB):HTTP ベースのワークロード向けですが、Lambda 関数が依然としてクエリを同期的に実行するため、タイムアウト問題は解消されません。プロビジョンドコンカレンシーはコールドスタート対策には有効ですが、遅いデータベースクエリそのものへの対応にはなりません。 D. Amazon SQS キュー:完全マネージド型のメッセージキューであり、API とデータベースクエリ処理を確実にデカップリングできます。API はリクエストをキューに送信した直後に即時応答でき、Lambda 関数は後続で非同期に処理を行うため、タイムアウトを回避できます。信頼性・耐障害性・スケーラビリティの面でも、本要件に最も適合します。 正解:D。Amazon SQS キューを作成し、REST API エンドポイントをそのキューを直接の宛先として設定し、Lambda 関数を SQS キューからメッセージを読み取るように設定します。 このソリューションにより: ・処理の非同期化(API は即時応答、Lambda は後続で処理)が実現されます。 ・遅いクエリによる Lambda のタイムアウトが防止されます。 ・SQS の信頼性により、メッセージの確実な処理が保証されます。 Amazon SQS は、リクエストをキューに格納することで非同期処理を可能にし、クライアントに対して即時の応答を返すことができます。API と Lambda 関数の実行を分離することで、クエリ処理中のタイムアウトリスクを排除し、応答時間の短縮と全体的なユーザーエクスペリエンスの向上を実現します。