Q31 — AWS SAP-C02 第2章
第 31/75 問 | ← 第2章
Q181. ある配達会社がAWSクラウド上でサーバーレスソリューションを実行しています。このソリューションは、ユーザー情報、配達情報、過去の購入履歴などのデータを管理します。構成は複数のマイクロサービスからなり、中央のユーザー管理サービスが機密データをAmazon DynamoDBテーブルに保存しています。他のいくつかのマイクロサービスでは、その機密データの一部を異なるストレージサービス(例:Amazon S3、Amazon RDSなど)にコピーして保持しています。同社は、ユーザーからの要請に基づき、当該ユーザーの情報を即時に削除できる機能を必要としています。すなわち、中央のユーザー管理サービスでユーザーを削除した直後に、他のすべてのマイクロサービスもそれぞれが保持する当該ユーザーのデータを即座に削除しなければなりません。 これらの要件を満たすソリューションはどれですか?
- A. Amazon DynamoDBテーブルでDynamoDB Streamsを有効化します。DynamoDB Streamsに対してAWS Lambdaトリガーを作成し、ユーザー削除に関するイベントをAmazon Simple Queue Service(Amazon SQS)キューに送信します。各マイクロサービスを、このキューをポーリングしてユーザー情報をDynamoDBテーブルから削除するように設定します。
- B. Amazon DynamoDBテーブルでDynamoDBイベント通知を設定します。Amazon Simple Notification Service(Amazon SNS)トピックを、このDynamoDBイベント通知のターゲットとして作成します。各マイクロサービスを、このSNSトピックにサブスクライブし、ユーザー情報をDynamoDBテーブルから削除するように設定します。
- C. 中央のユーザー管理サービスがユーザー削除時にカスタムAmazon EventBridgeイベントバスにイベントを発行するよう設定します。各マイクロサービスに対して、ユーザー削除イベントのパターンに一致するEventBridgeルールを作成し、当該マイクロサービス内のロジックを呼び出してDynamoDBテーブルからユーザー情報を削除するよう設定します。 ✓
- D. 中央のユーザー管理サービスがユーザー削除時にAmazon Simple Queue Service(Amazon SQS)キューにメッセージを送信するよう設定します。各マイクロサービスを、このSQSキューに対してイベントフィルターを設定し、DynamoDBテーブルからユーザー情報を削除するよう設定します。
正解: C. 中央のユーザー管理サービスがユーザー削除時にカスタムAmazon EventBridgeイベントバスにイベントを発行するよう設定します。各マイクロサービスに対して、ユーザー削除イベントのパターンに一致するEventBridgeルールを作成し、当該マイクロサービス内のロジックを呼び出してDynamoDBテーブルからユーザー情報を削除するよう設定します。
解説
正解はCです。 選択肢Aは、DynamoDB Streamsを有効化し、Lambdaトリガーを経由してSQSキューにユーザー削除イベントを送信するものです。その後、各マイクロサービスがキューをポーリングしてDynamoDBからデータを削除します。この方法は、追加のインフラコンポーネント(SQS、Lambdaなど)を導入するため、運用オーバーヘッドが増大し、アーキテクチャが複雑化します。 選択肢Bは、DynamoDBイベント通知という機能を前提としていますが、実際には「DynamoDBイベント通知」という公式機能は存在しません(DynamoDB StreamsやDynamoDBへのイベント駆動型連携は可能ですが、独立した「イベント通知」サービスはありません)。したがって、この選択肢は技術的に不正確であり、誤りです。 選択肢Cは、中央のユーザー管理サービスがユーザー削除時にEventBridgeカスタムイベントバスにイベントを発行し、各マイクロサービスが専用のEventBridgeルールでそのイベントをキャッチして削除処理を実行するものです。EventBridgeはフルマネージドサービスであり、イベントの配信遅延が極めて小さく、スケーラビリティ・信頼性・運用簡易性の面で優れています。また、各マイクロサービスの実装を疎結合に保ちつつ、即時性と一貫性を確保できます。 選択肢Dは、SQSキューを介してメッセージを送信する方法ですが、SQSはプル型のサービスであり、イベントフィルタリング機能は標準では提供されていません(SQSにはメッセージ属性による基本的なフィルタリングはありますが、EventBridgeのような柔軟なパターンマッチングやルーティング機能はありません)。また、各マイクロサービスが同一キューをポーリングすると競合や重複処理のリスクが生じ、即時性・確実性の担保が困難になります。 総合的に、選択肢Cは、コスト効率・スケーラビリティ・運用負荷の低減・即時削除の保証という点で、最も適したソリューションです。