【正解】B
【0からの解説】
この問題のポイントは 2 つあります。
(1) 明確化ワークフロー=「ユーザーの追加回答を待ってから処理を続行する」フローをどうオーケストレーションするか。AWS Step Functions の「コールバック待機(Wait for a Callback with Task Token)」パターンは、タスクトークンを発行して外部からの応答(ここではユーザーの明確化回答)が返るまでワークフローを一時停止できる仕組みです。ユーザーの応答は数分〜数時間かかる可能性があるため、最長 1 年間実行できる Standard ワークフローが適しています(Express は最長 5 分)。
(2) 会話履歴の保存先。Amazon DynamoDB はミリ秒単位の低レイテンシで自動スケールする NoSQL データベースで、「数千の同時ユーザー」「迅速な応答」に最適です。オンデマンドキャパシティなら負荷予測なしでスケールし、サーバー側暗号化で「暗号化された記録の保存」要件も満たします。
【B が正解の理由】
Standard ワークフロー+コールバック待機パターンが明確化ワークフローの待ち時間を正しく扱え、DynamoDB(オンデマンド+暗号化)が大量同時アクセス・低レイテンシ・暗号化のすべてを満たすためです。
【誤りの選択肢】
A:Express ワークフローは最長 5 分の実行制限があり、ユーザーの応答を待つ明確化フローには不適です。また Amazon RDS はリレーショナルデータベースで、数千の同時接続をさばくにはコネクション管理やスケーリングの考慮が必要になり、セッションデータ用途では DynamoDB に劣ります。
C:Amazon S3 はオブジェクトストレージであり、会話のたびに小さな JSON ファイルを読み書きする低レイテンシのセッション管理には不向きです。また、曖昧クエリに対する明確化ワークフローを実行する仕組みがこの構成には含まれていません。
D:Amazon SQS は非同期メッセージキューであり、ユーザーとの対話的なやり取り(応答を待って次の処理へ進む)のオーケストレーションには適しません。ElastiCache はインメモリキャッシュで一時データ向きであり、パーソナライゼーションのために会話記録を永続保存する用途の主データストアとしては不適切です。
【参考】
タスクトークンを使用したコールバック待機(サービス統合パターン)Standard ワークフローと Express ワークフローDynamoDB の保管時の暗号化