Auth0とAmazon EventBridgeをCloudFormationで連携して、Auth0のログをSNSトピックに配信する

Auth0とAmazon EventBridgeをCloudFormationで連携して、Auth0のログをSNSトピックに配信する

Auth0のLog StreamsをAmazon EventBridgeに配信します。Amazon CloudFormationで構築します。
Clock Icon2022.10.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Auth0には、Log Streamsの機能があり、ログをAmazon EventBridgeに配信できます。 今回は、CloudFormationでAmazon EventBridgeを構築してみました。 なお、配信先はSNSトピック(メール配信)です。

おすすめの方

  • Auth0とAmazon EventBridgeを連携したい方
  • Amazon EventBridgeでパートナーイベントソースを利用したい方
  • Amazon EventBridgeをCloudFormationで構築したい方
  • Amazon EventBridgeでカスタムイベントバスを利用したい方

Auth0テナントとReactアプリを作成する

Single Page Web Applicationsを作成する

適当に作ります。

Auth0でアプリケーションを作成する

Reactのサンプルアプリを用意する

Quick Startから、Reactのサンプルアプリをダウンロードして、実行します。

Auth0でアプリケーションを作成する

Auth0でアプリケーションを作成する

「Allowed Callback URLs」なども設定しておきます。

Auth0でアプリケーションを作成する

サンプルアプリが起動しました。

Auth0でアプリケーションを作成した

Auth0でStreamsを設定する

「Monitoring」の「Streams」にアクセスして、「Create Log Stream」を選択します。

Auth0でStreamsを設定する

「Amazon EventBridge」を選択して作成します。

Auth0のStreamsでAmazon EventBridgeを設定する

アカウントIDやリージョンなどを設定し、Saveします。

Auth0のStreamsでAmazon EventBridgeを設定する

Amazon EventBridgeを設定する

パートナーイベントソースを関連付ける

Amazon EventBridgeの画面を見ると、関連付け待ちのイベントソースがあります。

Amazon EventBridgeでパートナーイベントソースを関連付ける

イベントバスと関連付けを行います。

Amazon EventBridgeでパートナーイベントソースを関連付ける

最後に、イベントバスをコピーしておきます。

CloudFormationテンプレート

次のCloudFormationテンプレートを作成します。

「EventBusName」と「source」は、さきほど関連付けたイベントバスを利用します。

AWSTemplateFormatVersion: '2010-09-09'
Description: Auth0 Event Stream Sample

Resources:

  Auth0EventStreamTopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Protocol: email
          Endpoint: sample@example.com

  Auth0EventStreamTopicPolicy:
    Type: AWS::SNS::TopicPolicy
    Properties:
      PolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: events.amazonaws.com
            Action: sns:Publish
            Resource: '*'
      Topics:
        - !Ref Auth0EventStreamTopic

  Auth0EventStreamEventRule:
    Type: AWS::Events::Rule
    Properties:
      EventBusName: aws.partner/auth0.com/xxx/auth0.logs
      EventPattern:
        source:
          - aws.partner/auth0.com/xxx/auth0.logs
      Targets:
        - Id: Auth0EventStreamTopic
          Arn: !Ref Auth0EventStreamTopic

動作を確認する

新規ユーザ登録してログインする

サンプルアプリで新規ユーザ登録・ログイン・ログアウトなどを適当に繰り返します。

メールが来た!

SNSトピック経由でメールが届いた

SNSトピック経由でメールが届いた

さいごに

「EventBusName」の指定が必要だと分からずに、しばらーーーーーくハマりました。どなたかの参考になれば幸いです。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.