Q38 — AWS SAA-C03 第1章

第 38/65 問 | ← 第1章

Q38. ある企業が自動車販売サイトを運営しており、その在庫情報(リスト)をAmazon RDS上のデータベースに格納しています。自動車が売却された際には、ウェブサイトから該当のリストを削除するだけでなく、そのデータを複数のターゲットシステムへ送信する必要があります。ソリューションアーキテクトは、どの設計を推奨すべきでしょうか?

正解: D. Amazon RDSのイベント通知をサブスクライブし、その通知をAmazon Simple Notification Service (Amazon SNS) トピックに送信した後、それを複数のAmazon Simple Queue Service (Amazon SQS) キューへファンアウトさせる。その後、AWS Lambda関数を使用して各ターゲットを更新する。

解説

A:AWS LambdaはAmazon RDSのデータベース更新を直接トリガーとして使用できません。RDSのイベント通知はまずAmazon SNSを経由して送信され、その後SNSからLambda関数を起動します(https://docs.aws.amazon.com/lambda/latest/dg/services-rds.html を参照)。B:Aと同様に、RDSからLambdaを直接トリガーすることはできません。C:RDSのイベント通知は、Amazon SQSではなくAmazon SNSを通じて配信されます。D:これが正しい設計です。Amazon RDSのイベント通知をサブスクライブすると、通知がAmazon SNSトピックに送信され、そのトピックから複数のAmazon SQSキューへファンアウトできます。Amazon RDSイベント通知のサブスクリプションでは、指定したDBインスタンス、DBスナップショット、DBセキュリティグループ、またはDBパラメータグループでイベントが発生した際に通知を受け取ることができます。最も簡単なサブスクリプション作成方法はRDSコンソールですが、CLIまたはAPIを使用する場合は、事前にAmazon SNSトピックを作成し、SNSコンソールまたはSNS APIでそのトピックを購読する必要があります。