0
0

[Serverless ECワークショップ] Step3: SNSを利用して、未払いや注文の通知を社内に送信する

Last updated at Posted at 2024-08-08

前のステップ: Amazon EventBridgeのルールを作成して、Stripeからのイベントを受信する
https://qiita.com/hideokamoto/private/61c30ef9c0aa137ac020

もっともシンプルなユースケースは「通知」です。ECサイトでは、さまざまな場面で「社内での通知」を行う必要があります。

  • 「商品が売れた、決済が完了した」ことを、商品発送チームに通知する
  • 「不正利用と思われる注文があった」ことを、サポートチームに通知する
  • 「銀行振込の入金が完了した」ことを、会計チームに通知する
  • etc

AWSを使ったシンプルな通知の例として、SNSへの連携を体験してみましょう。EventBridgeとSNSを連携させることで、メールやSMSへの通知や大規模な並列処理を行うためのファンアウトの実点、そしてAWS Chatbotを組み合わせたSlackなどのチャットボット作成などが簡単に作れるようになります。このステップでは、つぎの手順で作業を行います。

 - SNSトピックを作成する
 - 作成済みのEventBridgeルールに、ターゲットを追加する
 - イベントを送信し、通知が届くことを確認する

3-1: SNSトピックを作成する

EventBridgeとAWSのサービスを連携するためには、先に連携先のリソースを作成する必要があります。そのため、まずSNSのリソースを作成しましょう。SNSのトップページに、[トピックの作成]フォームがあります。「トピックの名前」を入力しましょう。

スクリーンショット 2024-07-25 16.32.36.png

今回はワークショップ用ですので、20240727Workshopと入力します。入力後、[次のステップ]ボタンをクリックしてください。

スクリーンショット 2024-07-25 16.32.52.png

つぎのステップでは、作成するSNSリソースの設定を行います。「SNSへ送信された順番に、通知を送信したい」のような特別な要件がない場合は、デフォルトで選択されている「スタンダード]を選びましょう。

スクリーンショット 2024-07-25 16.33.01.png

表示名やタグ、トレースの設定が行えますが、オプション機能ですので設定を省略します。最後に[トピックの作成]ボタンをクリックして、SNSのトピックを作成してください。

スクリーンショット 2024-07-25 16.33.10.png

作成に成功すると、SNSトピックの詳細ページに移動します。これでSNSトピックの作成が完了しました。

スクリーンショット 2024-07-25 16.33.20.png

3-2: SNSのサブスクリプションを作成する

SNSはEventBridgeと同様に、「イベント / 通知に反応するルール」を設定できます。SNSではサブスクリプションという名前で、メールやSMS・HTTPSリクエストなどで通知の送信先を選べます。ざっくり「トピックに通知が来たかどうかの購読(サブスクリプション)を行い、設定した宛先にそのことを通知する」仕組みだと考えてください。

SNSのサブスクリプションは、SNSトピックの詳細ページから追加できます。ページ中段から下部にある[サブスクリプション]へスクロールしてください。サブスクリプションの作成ボタンがありますので、クリックしましょう。

スクリーンショット 2024-07-25 16.33.26.png

サブスクリプションの作成画面では、「購読するトピック」と「通知を送信する宛先」の2つを設定します。サブスクリプションをSNSのトピック詳細画面から作成する場合、[トピックARN]はすでに設定済みですので、「通知の宛先」だけ設定しましょう。

まず送信方法(プロトコル)を選ぶ必要があります。今回はメールを利用しますので、[Eメール]を選択してください。

スクリーンショット 2024-07-25 16.33.53.png

その後[エンドポイント]へ、通知を送信したいメールアドレスを入力します。

SNSの宛先にメールアドレスを設定する場合、サブスクリプション作成・更新時に「メールによる認証」を行う必要があります。そのため、ここで設定するメールアドレスはご自身でメールを受信できるメールアドレスを設定してください。

スクリーンショット 2024-07-25 16.34.05.png

入力後、サブスクリプションを作成すると、サブスクリプション詳細ページに移動します。下のスクリーンショットのような画面・メッセージが表示されていれば作成成功です。

スクリーンショット 2024-07-25 16.34.23.png

登録したメールアドレスで新着メールをチェックしてください。[AWS Notification - Subscription Confirmation]というメールが届いていますので、メール内のURLをクリックして、本人確認を進めましょう。

スクリーンショット 2024-07-25 16.34.55.png

[Subscription confirmed]と表示されているページが表示されていれば、SNSで受信した通知をメールで受け取る準備は完了です。

スクリーンショット 2024-07-25 16.35.21.png

3-3: EventBridgeルールに、ターゲットを追加する

SNSが作成できましたので、早速StripeからのイベントをSNSに送れるように、EventBridgeの設定を更新しましょう。EventBridgeのイベントバスページまたは、ルールページから、Step2で作成したcheckout-completedルールを開きましょう。

スクリーンショット 2024-07-26 16.10.11.png

ルールの詳細ページから、[ターゲット]タブを開きます。ここでは、先ほどのステップで作成した「CloudWatch ロググループ」がターゲットとしてすでに登録されていることが確認できます。新しいターゲットとしてSNSを追加するため、[編集]ボタンをクリックしましょう。

スクリーンショット 2024-07-26 16.10.36.png

編集画面では、ターゲットの追加・更新・削除が行えます。新しくターゲットを追加する場合、[別のターゲットを追加]をクリックしてください。

スクリーンショット 2024-07-26 16.12.32.png

ボタンをクリックすると、新しくターゲットを設定するフォームが表示されます。そこで[ターゲットタイプ]に[AWS のサービス]を選択し、[ターゲットを選択]で[SNS トピック]を選択してください。するとそのAWSアカウント・リージョンで利用できるSNSトピックを選択する画面が表示されます。

ここで先ほど作成したSNSトピック(20240727Workshop)を選択しましょう。

スクリーンショット 2024-07-26 16.13.19.png

選択後、新しくルールを追加した際と同じように、タグの設定画面と、確認画面が表示されます。それぞれ[次へ]や[ルールの更新]ボタンをクリックしていくことで、更新が完了します。

3-4: 通知メールが届くことを確認する

ターゲットの追加が終われば、接続しているStripeアカウントでテスト注文を行うか、Stripe CLIでイベントを送信しましょう。ターゲットの設定が完了していれば、つぎのようなメールが届くようになります。

スクリーンショット 2024-07-26 16.18.31.png

Step3 まとめ

このようにStripeなどの外部サービスで発生した出来事を、EventBridgeとSNSを利用して、メールやSMSなどで簡単に受信できる構成を作ることができます。具体的な通知シナリオの例については、AWSのドキュメントもあわせてご確認ください。

今回はシンプルな手順で連携を体験する目的で、JSONデータをそのままメールで受信するワークロードを構築しています。実際の業務で利用する場合は、「不正利用の疑いがある注文」や「サブスクリプション更新費用の未払いが発生した場合」などの通知を、手早く実装する際などに有効です。

「不正利用の疑いがある注文」や「サブスクリプション更新費用の未払いが発生した場合」などの通知を受け取る際に利用する、EventBridgeルールのイベントパターン例:

{
  "source": [{
    "prefix": "aws.partner/stripe.com"
  }],
  "detail-type": ["review.opened", "invoice.payment_failed"]
}

より具体的なメッセージを含む通知を送信したい場合は、つぎのステップで紹介するStep Functionsを利用する方法をお試しください。

次のステップ: Step Functionsを利用して、商品ダウンロードリンクを送信する流れを体験する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0