AWS認定資格 WEB問題集&徹底解説

生成AIデベロッパー-プロフェッショナル

正解 C問題
分野2:実装と統合 タスクステートメント2.4:FM API 統合の実装
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あるコールセンターは、オペレーターが顧客とのチャット対応中に入力した下書きに対して、Amazon Bedrock がリアルタイムに文面の改善案を逐次ストリーミングで返す支援ツールを導入したい。オペレーターがキーボードで入力するたびにクライアントから続きのテキストを送信し、モデルからの提案をトークン単位で即座に受け取れる、常時接続の双方向通信が必要である。

クライアントアプリケーションとバックエンドの間にこの永続的な双方向接続を確立するために使うべきAWSサービスはどれか。
  • Amazon Kinesis Data Streams にクライアントの入力を随時送信し、バックエンド側でモデル呼び出しの結果を別途ポーリングして取得する
  • Amazon SQS のキューでクライアントの入力とモデルの応答を非同期にやり取りする
  • Amazon API Gateway の WebSocket API を使い、クライアントとバックエンドの間に永続的な双方向接続を確立する
  • Amazon API Gateway の REST API を、クライアントが一定間隔でポーリングして最新の提案を取得する
解説 頻出度★★★★
この問題は、「クライアントとバックエンドの常時接続 × 双方向 × モデル応答をトークン単位で逐次配信」という要件で、Amazon API Gateway の WebSocket API を選べるかがポイント

A. Amazon Kinesis Data Streams にクライアントの入力を随時送信し、バックエンド側でモデル呼び出しの結果を別途ポーリングして取得する

Amazon Kinesis Data Streams は大量のイベントデータを取り込んで複数のコンシューマーへ配信するためのストリーミングデータ基盤で、クライアント(オペレーターのブラウザ)と常時接続を張るための仕組みではありません。
クライアントはレコードを put できても、返ってくる提案は別途ポーリングして取りに行く設計になり、「常時接続の双方向通信」という要件を満たしません。
シャード管理やイテレーターの扱いも必要で、UI 向けの低レイテンシな逐次表示には不向きです。

B. Amazon SQS のキューでクライアントの入力とモデルの応答を非同期にやり取りする

Amazon SQS は非同期のメッセージキューであり、コンシューマーがメッセージを受信するにはポーリング(ロングポーリングを含む)が必要です。
サーバーからクライアントへ能動的にトークンを push できないため、タイプするたびに提案が逐次流れてくる体験は作れません
疎結合なジョブ連携には最適ですが、対話 UI のリアルタイム通信路としては誤りです。

正解

C. Amazon API Gateway の WebSocket API を使い、クライアントとバックエンドの間に永続的な双方向接続を確立する

Amazon API Gateway の WebSocket API は、クライアントとバックエンドの間に永続的な双方向接続を確立するためのマネージド機能です。
クライアントからは入力中のテキストを同じ接続で随時送信でき、バックエンドは接続 ID を指定した @connections API(PostToClient)でサーバー側から能動的にデータを push できるため、Amazon Bedrock のストリーミング応答(InvokeModelWithResponseStream)で受け取ったトークンをそのまま逐次転送できます。
接続管理・スケーリング・認証を API Gateway に任せられる点でも、常時接続を要する支援ツールの定石です。

D. Amazon API Gateway の REST API を、クライアントが一定間隔でポーリングして最新の提案を取得する

REST API を一定間隔でポーリングする方式は、クライアントが要求したときにしか応答を取得できないため、トークン単位の即時表示になりません。
間隔を短くすれば遅延は縮みますが、空振りリクエストが増えてコストと負荷が跳ね上がり、それでも「常時接続の双方向通信」という明示要件は満たせません。
REST API は 1 往復で完結する要求/応答向けであり、この用途には構造的に合いません。

これだけ覚える(記憶フック)
常時接続の双方向ストリーミングは API Gateway の WebSocket API。ポーリングもキューも代替にならない。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
クライアントとバックエンドの間に永続的な接続を確立する WebSocket API だけが常時接続を維持できる。REST は要求のたびに接続が完結する
→選択肢(D)を消す
入力のたびにクライアントから送信し、提案をサーバーから受け取る(双方向) サーバーから能動的に push できるかが分かれ目。キューはコンシューマーのポーリング前提
→選択肢(B)を消す
モデルの提案をトークン単位で即座に受け取る(低レイテンシの逐次配信) @connections API で接続 ID 宛に逐次 push できる。ポーリング間隔に律速される方式では実現できない
→選択肢(C)が正解
対象はオペレーターのクライアントアプリ(UI 向けの通信路) ストリーミングデータ取り込み基盤はクライアント接続の受け口ではない。シャードやイテレーターの管理も UI 用途には過剰
→選択肢(A)を消す
ひっかけポイント
  • Kinesis Data Streams は「ストリーミング」という語が要件と重なるため紛らわしいが、データ分析基盤へのストリーム取り込み用。クライアントとの常時接続を張る仕組みではない
  • SQS は「非同期にやり取り」と書かれている時点で要件と矛盾する。設問が求めているのは同期的・双方向・常時接続
  • REST API のポーリングは実装が容易で一見成立するが、「永続的な双方向接続」という明示要件を満たさない。間隔を詰めても空振り呼び出しが増えるだけ
  • Bedrock 側の InvokeModelWithResponseStream はサーバーとモデルの間のストリーミング。クライアントまでトークンを届ける経路は別途 WebSocket などで用意する必要がある
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「サーバーから一方向に進捗や結果を流せればよい」 Lambda 関数 URL のレスポンスストリーミングや SSE(Server-Sent Events)も選択肢に。
「モバイル/Web アプリへ購読ベースでリアルタイム通知したい」 AWS AppSync の GraphQL サブスクリプションが正解軸に。
「長時間かかる処理を投げっぱなしにして後で結果を受け取る Amazon SQS +非同期処理が正解に。
「通話音声を逐次テキスト化しながら要約したい」 Amazon Transcribe のストリーミングと組み合わせる構成が問われる。
「大量のクリックストリームを分析基盤へ取り込みたい Kinesis Data Streams / Data Firehose が正解に。
関連サービスの解説 Amazon Bedrock
Amazon API Gateway
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 100%
No.4 解説
あるコールセンターは、オペレーターが顧客とのチャット対応中に入力した下書きに対して、Amazon Bedrock がリアルタイムに文面の改善案を逐次ストリーミングで返す支援ツールを導入したい。オペレーターがキーボードで入力するたびにクライアントから続きのテキストを送信し、モデルからの提案をトークン単位で即座に受け取れる、常時接続の双方向通信が必要である。

クライアントアプリケーションとバックエンドの間にこの永続的な双方向接続を確立するために使うべきAWSサービスはどれか。
  • Amazon Kinesis Data Streams にクライアントの入力を随時送信し、バックエンド側でモデル呼び出しの結果を別途ポーリングして取得する
  • Amazon SQS のキューでクライアントの入力とモデルの応答を非同期にやり取りする
  • Amazon API Gateway の WebSocket API を使い、クライアントとバックエンドの間に永続的な双方向接続を確立する
  • Amazon API Gateway の REST API を、クライアントが一定間隔でポーリングして最新の提案を取得する

(会員限定)当問題の評価をお願いします。改善に活用します。