前のステップ: 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のトップページに、[トピックの作成]フォームがあります。「トピックの名前」を入力しましょう。
今回はワークショップ用ですので、20240727Workshop
と入力します。入力後、[次のステップ]ボタンをクリックしてください。
つぎのステップでは、作成するSNSリソースの設定を行います。「SNSへ送信された順番に、通知を送信したい」のような特別な要件がない場合は、デフォルトで選択されている「スタンダード]を選びましょう。
表示名やタグ、トレースの設定が行えますが、オプション機能ですので設定を省略します。最後に[トピックの作成]ボタンをクリックして、SNSのトピックを作成してください。
作成に成功すると、SNSトピックの詳細ページに移動します。これでSNSトピックの作成が完了しました。
3-2: SNSのサブスクリプションを作成する
SNSはEventBridgeと同様に、「イベント / 通知に反応するルール」を設定できます。SNSではサブスクリプションという名前で、メールやSMS・HTTPSリクエストなどで通知の送信先を選べます。ざっくり「トピックに通知が来たかどうかの購読(サブスクリプション)を行い、設定した宛先にそのことを通知する」仕組みだと考えてください。
SNSのサブスクリプションは、SNSトピックの詳細ページから追加できます。ページ中段から下部にある[サブスクリプション]へスクロールしてください。サブスクリプションの作成ボタンがありますので、クリックしましょう。
サブスクリプションの作成画面では、「購読するトピック」と「通知を送信する宛先」の2つを設定します。サブスクリプションをSNSのトピック詳細画面から作成する場合、[トピックARN]はすでに設定済みですので、「通知の宛先」だけ設定しましょう。
まず送信方法(プロトコル)を選ぶ必要があります。今回はメールを利用しますので、[Eメール]を選択してください。
その後[エンドポイント]へ、通知を送信したいメールアドレスを入力します。
SNSの宛先にメールアドレスを設定する場合、サブスクリプション作成・更新時に「メールによる認証」を行う必要があります。そのため、ここで設定するメールアドレスはご自身でメールを受信できるメールアドレスを設定してください。
入力後、サブスクリプションを作成すると、サブスクリプション詳細ページに移動します。下のスクリーンショットのような画面・メッセージが表示されていれば作成成功です。
登録したメールアドレスで新着メールをチェックしてください。[AWS Notification - Subscription Confirmation]というメールが届いていますので、メール内のURLをクリックして、本人確認を進めましょう。
[Subscription confirmed]と表示されているページが表示されていれば、SNSで受信した通知をメールで受け取る準備は完了です。
3-3: EventBridgeルールに、ターゲットを追加する
SNSが作成できましたので、早速StripeからのイベントをSNSに送れるように、EventBridgeの設定を更新しましょう。EventBridgeのイベントバスページまたは、ルールページから、Step2で作成したcheckout-completed
ルールを開きましょう。
ルールの詳細ページから、[ターゲット]タブを開きます。ここでは、先ほどのステップで作成した「CloudWatch ロググループ」がターゲットとしてすでに登録されていることが確認できます。新しいターゲットとしてSNSを追加するため、[編集]ボタンをクリックしましょう。
編集画面では、ターゲットの追加・更新・削除が行えます。新しくターゲットを追加する場合、[別のターゲットを追加]をクリックしてください。
ボタンをクリックすると、新しくターゲットを設定するフォームが表示されます。そこで[ターゲットタイプ]に[AWS のサービス]を選択し、[ターゲットを選択]で[SNS トピック]を選択してください。するとそのAWSアカウント・リージョンで利用できるSNSトピックを選択する画面が表示されます。
ここで先ほど作成したSNSトピック(20240727Workshop
)を選択しましょう。
選択後、新しくルールを追加した際と同じように、タグの設定画面と、確認画面が表示されます。それぞれ[次へ]や[ルールの更新]ボタンをクリックしていくことで、更新が完了します。
3-4: 通知メールが届くことを確認する
ターゲットの追加が終われば、接続しているStripeアカウントでテスト注文を行うか、Stripe CLIでイベントを送信しましょう。ターゲットの設定が完了していれば、つぎのようなメールが届くようになります。
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を利用して、商品ダウンロードリンクを送信する流れを体験する