This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

[Serverless ECワークショップ]Step1: StripeとAmazon EventBridgeを連携する

Last updated at Posted at 2024-07-26

このステップは、パブリックベータ・正式リリース後に手順が大きく変わります

変更後の手順につきましては、以下のドキュメントから確認できます。
https://docs.stripe.com/event-destinations/eventbridge
パブリックベータの申請が完了した方についても、このURLから接続方法を見ることができます。

ここではお使いのStripeアカウントから、AWSアカウントに対してイベントを送信するための連携設定を行います。ただし本日のワークショップでは、事前の申請が必要な機能であるため、擬似的にこの連携機能を再現させる方法を紹介します。

1-1: Event Busを作成する

EventBridgeでは、「処理したいイベント」の「送信元」と「送信先」の設定を行う「イベントバス」を利用します。初期状態では、defaultというイベントバスが用意されています。

スクリーンショット 2024-07-24 15.54.09.png

連携するサービスごとにイベントバスを作成することで、「どのサービス・AWSリソースからのイベントを処理するか?」をわかりやすくできます。今回は「Stripeからのイベント」を集約するため、stripe-workshop-20240727というカスタムバスを作成しましょう。

カスタムバスを作成するには、[カスタムイベントバス]セクションにある[イベントバスを作成]ボタンをクリックします。

スクリーンショット 2024-07-24 15.55.25.png

カスタムイベントバスを作るには、まずイベントバスの名前や説明文を入力します。ここでは名前欄にstripe-workshop-20240727と入力しましょう。[暗号化]については、デフォルトの設定のまま、次に進みます。

スクリーンショット 2024-07-24 15.59.01.png

ページをスクロースすると、[リソースベースのポリシー]の設定画面が開きます。このフォームを利用して、このイベントバスにカスタムの権限を設定することができます。Organizationを含む別のAWSアカウントからイベントバスに対してイベントを送信(events:PutEvents)する際などでは、ここにJSON形式でポリシーを設定します。

スクリーンショット 2024-07-24 16.01.13.png

今回は講師が用意したAWSアカウントからイベントを受信する設定が必要です。そのため、このフォームに対して、次のJSONをコピーアンドペーストしてください。

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AllowAccountToPutEvents",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::066745912890:root"
    },
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:ap-northeast-1:{{あなたのAWSアカウントID}}:event-bus/{{利用するイベントバス名}}"
  }]
}

その後、Resource{{あなたのAWSアカウントID}}{{利用するイベントバス名}}をご自身のものに変更します。

例:

-"Resource": "arn:aws:events:ap-northeast-1:{{あなたのAWSアカウントID}}:event-bus/{{利用するイベントバス名}}"
+"Resource": "arn:aws:events:ap-northeast-1:123456789:event-bus/stripe-workshop-20240727"

[アーカイブ][スキーマの検出][タグ]については、オプション機能なので設定の変更は省略します。[作成]ボタンをクリックして、カスタムイベントバスを作成しましょう。

スクリーンショット 2024-07-24 16.11.50.png

作成成功のメッセージと共に、カスタムイベントバスの詳細ページに移動すれば、作成成功です。

スクリーンショット 2024-07-24 16.12.28.png

1-2: AWSアカウント情報を、フォームから送信する

今回は事前にStripeとの連携を完了させたAWSアカウントを用意しています。このAWSアカウントから、それぞれのAWSアカウントに対して、イベントを転送する形で連携を実施します。

以下のURLから、転送先のEventBridge情報を送信してください。

項目名 入力例 注意点
AWSアカウントID 123456789
リージョン ap-northeast-2 作業するリージョンを指定してください
イベントバス名 stripe-workshop-20240727 1-1で作成したイベントバス名を入力します

フォームから送信された情報を利用して、イベントを転送する設定を講師が手動で実施します。これはStep1の手順と並行して実施しますので、フォーム送信が完了した方は、次のステップに進んでください。Step2以降を先行して進めたい方は、その時点で講師まで接続状況を確認しにきてください。

ここまでで、イベントを受信するための設定が完了しました。Step2では、「どんなイベントを受信するか」を設定するため、EventBridgeのルールの作成を行います。

[読み物] 別のAWSアカウントにイベントを送信する際、どんな設定を行うか

これは講師側がどんな作業をしているかを知るための読み物ステップです。
別のリージョンまたはAWSアカウントへイベントを送信する仕組みに興味がある方は、ぜひお読みください。

EventBridgeでは、「他のイベントバスに対してイベントを転送する」設定が行えます。これによって今回の例のように、「複数のAWSアカウントにイベントを転送すること」や、「連携サービスごとに受け取ったイベントを、ドメイン・サービス単位のイベントバスへ転送する」ような設計が実現できます。

この設定は通常のルール作成と同様の作業で実現できます。まず新しくバスに対してルールを作成しましょう。その際、[ターゲットタイプ]を「EventBridge イベントバス]に指定しましょう。すると「どのAWSアカウントにあるイベントバスへ送信するか」の選択画面が表示されます。

スクリーンショット 2024-07-24 15.47.35.png

別のAWSアカウント、あるいは別リージョンのイベントバスにイベントを転送したい場合、[別のアカウントまたはリージョンのイベントバス]を選択してください。すると送信先のイベントバスARNと、このターゲットで利用する実行ロールの設定画面が表示されます。

ここで送信先のイベントARNを指定すれば、イベントを受信した際に転送してくれるようになります。

スクリーンショット 2024-07-24 15.48.44.png

ただしこのままでは、「そのAWSアカウントにイベントを送信する許可」が設定されていません。そのため、ターゲットに設定したIAMロールに対して、次のようなIAMポリシーを設定しましょう。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "arn:aws:events:ap-northeast-1:{{送信先のAWSアカウントID}}:event-bus/{{送信先のイベントバス名}}"
            ]
        }
    ]
}

この設定を行うことで、別のアカウントまたは別のリージョンに対してイベントを転送できるようになります。

次のステップ: Amazon EventBridgeのルールを作成して、Stripeからのイベントを受信する

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