Q38 — AWS SAA-C03 第1章
第 38/65 問 | ← 第1章
Q38. ある企業が自動車販売サイトを運営しており、その在庫情報(リスト)をAmazon RDS上のデータベースに格納しています。自動車が売却された際には、ウェブサイトから該当のリストを削除するだけでなく、そのデータを複数のターゲットシステムへ送信する必要があります。ソリューションアーキテクトは、どの設計を推奨すべきでしょうか?
- A. Amazon RDS上のデータベースが更新された際に起動されるAWS Lambda関数を作成し、その関数から情報をAmazon Simple Queue Service (Amazon SQS) キューに送信して、ターゲットシステムがキューからメッセージを消費できるようにする。
- B. Amazon RDS上のデータベースが更新された際に起動されるAWS Lambda関数を作成し、その関数から情報をAmazon Simple Queue Service (Amazon SQS) FIFOキューに送信して、ターゲットシステムがキューからメッセージを消費できるようにする。
- C. Amazon RDSのイベント通知をサブスクライブし、その通知をAmazon Simple Queue Service (Amazon SQS) キューに送信した後、それを複数のAmazon Simple Notification Service (Amazon SNS) トピックへファンアウトさせる。その後、AWS Lambda関数を使用して各ターゲットを更新する。
- D. Amazon RDSのイベント通知をサブスクライブし、その通知をAmazon Simple Notification Service (Amazon SNS) トピックに送信した後、それを複数のAmazon Simple Queue Service (Amazon SQS) キューへファンアウトさせる。その後、AWS Lambda関数を使用して各ターゲットを更新する。 ✓
正解: 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でそのトピックを購読する必要があります。