AWSのEventBridgeにStripe連携のクイックスタートが追加された
EventBridgeで一部のSaaSサービスとの連携を簡単に構築できるようになりました(GitHub、Stripe、Twillio)
どんな感じでできるのかStripe連携を試してみたので、記事に残します。
あくまで作業の記録ですので、各サービスの詳細な説明は割愛します。
なお、作業は↓の記事を参照しながらやりました。
https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas-furls.html
Step 1: StripeのWebhookエンドポイントを追加する
StripeのダッシュボードからWebhookのエンドポイントを追加します。※テスト環境でやりました
今回は顧客が追加されたときのイベント customer.created をリッスンします。
エンドポイントURLは現時点ではまだ分からないので適当に入れます。

エンドポイントを追加したら、whsec_ から始まる署名シークレットをメモします。後のステップで必要です。

Step 2:EventBridgeのセットアップ
EventBridgeのコンソール画面を開いて、左側のペインにある「クイックスタート」をクリックします。
※リージョンに注意

「Lambda fURL を使用したインバウンドウェブフック」を選択します。
最近登場した Lambda Function URLs は Lambda fURL と略すようです。誤植かと思いましたが、このように略すのが正しいようです。

下にスクロールしていくとStripe用の設定ボタンがあるので、そちらをクリックしてください。

使用するイベントバスを指定します。今回はStripe用のイベントバスを作成しました。

作成されるLambda fURLがパブリックに公開されますよ、いいですか?という内容の警告が出ます。チェックを入れて次に進みます。

テンプレートから作成するCloudFormationのスタック名、パラメータをそれぞれ入力します。
StripeWebhookSecretの欄がありますので、そこに Step1 でメモしていたStripeの署名シークレットを入れます。

IAMリソースの作成とCFが要求する権限についての注意書きにチェックを入れて、スタックの作成を行います。

CloudFormationのコンソール画面 を開いて先ほどのスタックのステータスが ✔CREATE_COMPLETE となれば作成完了です。
作成したスタックの詳細を開き、「出力」タブからWebhook先のURLを確認します。

再度Stripeのコンソールを開き、Step1で作成したWebhookのURLを上書きします。
以上でEventBridgeとの連携は完了です。

Webhookの内容をCloudWatch Logsに出力してみる
EventBridgeで受け取ったイベントはルールを定義して他のAWSサービスに連携できます。
今回はその一例として、CloudWatch Logsにデータを流す構成を作ってみます。
↓イメージ図は以下の通りです

まずは EventBridgeのコンソール画面 からルールを作成します。
ルールはStripe用に作ったイベントバスと紐づけて作成してください。
CloudWatch Logsへの連携設定は以上です。
Stripe CLIで顧客を作成してWebhookイベントを受け取ってみましょう。
ブラウザから stripe.sh を開くと簡単にCLIを使えます。

今回は分かりやすい例としてCloudWatchに連携しましたが、他にもStepFunctionsでワークフローを流したりLambda関数で外部サービスを連携したり、EventBridge経由で他のAWSアカウントにイベント連携したりも可能です。
CloudFormationで作成されるAWSリソース
作成されるAWSリソースは以下の通りです。
| タイプ | 用途 |
|---|---|
| AWS::CloudWatch::Alarm | アラート、5分間あたりの実行回数の閾値を監視 |
| AWS::Lambda::Function | Lambda関数 |
| AWS::IAM::Role | IAMロール |
| AWS::Lambda::Url | Lambda関数のHTTPエンドポイント |
| AWS::Lambda::Permission | Lambda関数をパブリック公開する許可 |
| AWS::SecretsManager::Secret | Webhookの署名シークレットをSecretsManagerに保存 |
参照







