メインコンテンツへスキップ
イベントをサブスクライブし、Event Stream を使用して任意の送信先に配信することで、次のようなユースケースを実現できます。
  • 新規顧客に歓迎メールを送信したり、メールアドレスの確認を依頼したりする。
  • ユーザーのライフサイクルの変化を監視し、CRM (顧客関係管理) や請求システムを更新する。
AWS EventBridge またはウェブフックを使用して Event Stream を作成できます。以下のセクションでは、両方のオプションの設定手順を説明します。

Management API へのアクセス (任意)

イベントストリームは、 または Auth0 Management API を使用してプロビジョニングできます。 を使用する場合は、イベントストリームを設定する前に、マシンツーマシン (M2M) アプリケーションを作成し、Management API トークンで認証する必要があります。詳細については、Management API Access Tokens を参照してください。
  1. Dashboard > Applications > Applications に移動し、Create Application を選択します。
  2. アプリケーションにわかりやすい名前を入力し、Machine to Machine Applications を選択します。次に、Create を選択します。
  3. アプリケーションから呼び出す API を選択します。この場合は、Auth0 Management API を使用します。
  4. アプリケーションのアクセストークンに含めて発行する権限を選択し、Authorize を選択します。テスト目的では、次を選択します。
    • read:event_streams
    • create:event_streams
    • update:event_streams
    • delete:event_streams
    • read:event_deliveries
    • update:event_deliveries
    • create:users
  5. Settings タブに移動して、クライアントIDクライアントシークレット、および ドメイン を控えます。
  6. Get Management API Access Tokens を参照し、アクセストークンを取得して保存します。

AWS EventBridge

以下では、AWS EventBridge を使用して Event Stream を作成し、有効化する方法について説明します。

EventBridge の前提条件

Event Stream で AWS EventBridge を使用するには、次のものが必要です。
  • AWS アカウント
    • AWS アカウントには、EventBridge を使用するための権限が必要です。アカウントをお持ちでない場合は、https://aws.amazon.com/eventbridge/ から登録してください。
  • AWS IAM 権限
  • AWS EventBridge イベントバス
  • AWS アカウント ID とリージョン

Event Stream (EventBridge) を作成する

Event Stream を使用すると、Auth0 テナント内のリアルタイムの変更を取得し、処理のために外部システムに送信できます。Event Stream を設定する前に、監視する イベントタイプ を特定する必要があります。次に、以下に示すように、AWS アカウント ID とリージョンを使用して Event Stream を設定します。この例では、Auth0 CLI を使用して user.created イベントをサブスクライブする Event Stream を作成します。このイベントは、テナントで新しいユーザーが登録されるたびにトリガーされます。
auth0 events create --name ng-demo-eventbridge --type eventbridge --subscriptions "user.created" --configuration '{"aws_account_id":"<your-aws-account-id>","aws_region":"<your-aws-region>"}'
成功した場合、この呼び出しはイベントストリームの id を含む次の JSON を返します。新しいイベントストリームはデフォルトで有効です。
{
  "id": "est_8of6RXoM1997qikH7NS11h",
  "status": "enabled",
  "name": "ng-demo-eventbridge",
  "subscriptions": [
    {
      "event_type": "user.created"
    }
  ],
  "created_at": "2025-01-29T18:08:43.440Z",
  "updated_at": "2025-01-29T18:08:43.440Z",
  "destination": {
    "type": "eventbridge",
    "configuration": {
      "aws_account_id": "<your-aws-account-id>",
      "aws_region": "<your-aws-region>",
      "aws_partner_event_source": "default"
    }
  }
}

Webhooks

AWS EventBridge の代替として、webhook を使用してEvent Streamを構成できます。 開始するには、まず特定のイベントが発生したときにリアルタイム通知を受信する webhook ハンドラーを設定します。次に、Event Streamを作成できます。 以下の手順に従って基本的な webhook ハンドラーを作成することも、次の既存サービスを使用することもできます。
  • Vercel
  • Inngest
既存のサービスを使用する場合は、Event Streamを作成する (webhook) に進んでください。使用しない場合は、以下の手順に従って独自の基本的な webhook ハンドラーを作成してください。

Webhook の前提条件

Webhook ハンドラーを正しく作成するには、次のものがインストールされていることを確認してください。
  • node.js
  • jq
  • npm
  • ngrok

Webhook ハンドラーを記述する

  1. expressnode_modules フォルダーにインストールし、package.json の依存関係に追加します。
  2. 環境変数の保存に .env ファイルを使用できるよう、dotenv をルートディレクトリにインストールします。
  3. user.created イベントを受信してデータベースに保存する webhook.js ファイルを作成します。
    const express = require('express');
    const app = express();
    
    // 認可ミドルウェア
    app.use((req, res, next) => {
      const token = req.headers["authorization"];
      if (token !== `Bearer ${API_TOKEN}`) {
        return res.status(401).json({ error: "Unauthorized" });
      }
      next();
    });
    
    // Webhook エンドポイント
    app.post("/webhook", async (req, res) => {
      console.log("Webhook received:", JSON.stringify(req.body, null, 2));
    
      const eventData = req.body;
      const { id, type, time, data } = eventData;
      const user = data.object;
    
      try {
        switch (type) {
          case "user.created":
            await handleUserCreated(user, time);
            break;
          case "user.updated":
            await handleUserUpdated(user, time);
            break;
          case "user.deleted":
            await handleUserDeleted(user, time);
            break;
          default:
            await handleDefaultEvent(id, type, time, data);
        }
    
        console.log(`Webhook event of type '${type}' committed to the database.`);
        res.sendStatus(204);
      } catch (err) {
        console.error("Error processing webhook:", err);
        res.status(500).json({ error: "Internal server error" });
      }
    });
    
    // user created イベントを処理する専用関数
    // この例では、ユーザーが独自のデータベースにも作成されるようにしています
    async function handleUserCreated(user, time) {
      const { user_id, email, name, nickname, created_at, updated_at } = user;
    
      const query = `
        INSERT INTO users (user_id, email, name, nickname, created_at, updated_at, raw_user, last_event_processed)
        VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
      `;
      const values = [
        user_id,
        email,
        name,
        nickname,
        created_at,
        updated_at,
        user,
        time,
      ];
    
      try {
        await getPool().query(query, values);
      } catch (err) {
        if (err.code === "23505") {
          console.error(`Duplicate user_id=${user_id}, skipping insert.`);
        } else {
          console.error(`Database error while creating user_id=${user_id}:`, err);
          throw err;
        }
      }
    }
    
  4. プロジェクトのルートに .env ファイルを作成し、次のように API トークンを追加します。
    API_TOKEN=`openssl rand -hex 32`
    echo "API_TOKEN=$API_TOKEN" > .env
    
  5. サーバーを起動します。
    node webhook.js
    
  6. Webhook をテストするには、ngrok などのツールを使って Webhook ハンドラーを公開します。
    ngrok http 3000
    
    これにより、ローカルの Webhook ハンドラー用の公開 URL が提供されます。たとえば、次のようになります。
    http://localhost:3000
    

Event Streamを作成する (webhooks)

Event Streamを使用すると、Auth0テナント内のリアルタイムな変更を取得し、外部システムに送信して処理できます。 Event Streamを設定する前に、監視するイベントタイプを特定する必要があります。次に、以下に示すように、webhookハンドラーを使用してEvent Streamを作成します。
この例では、Auth0 CLI を使用して、user.created イベントをサブスクライブする Event Stream を作成します。このイベントは、テナントで新しいユーザーが登録されるたびにトリガーされます。続いて、イベントデータは追加の処理のために Webhook エンドポイントへ転送されます。
source .env # .env ファイルを作成した webhook ディレクトリにいることを確認してください
WEBHOOK_URL="<ngrok URL>/webhook"

auth0 events create -n my-event1 -t webhook -s "user.created" -c '{"webhook_endpoint":"'"${WEBHOOK_URL}"'","webhook_authorization":{"method":"bearer","token":'"${API_TOKEN}"'"}}'
成功した場合、イベントストリームの id を含む次の JSON が返されます。新しいイベントストリームはデフォルトで有効になります。
{
  "id": "est_8of6RXoM1997qikH7NS11h",
  "status": "enabled",
  "name": "ng-demo-2",
  "subscriptions": [
    {
      "event_type": "user.created"
    }
  ],
  "created_at": "2025-01-29T18:08:43.440Z",
  "updated_at": "2025-01-29T18:08:43.440Z",
  "destination": {
    "type": "webhook",
    "configuration": {
      "webhook_endpoint": "https://example.com/webhook",
      "webhook_authorization": {
        "method": "bearer"
      }
    }
  }
}

Event Stream を確認する

Event Stream を作成したら、次のコマンドを使用して Event Stream が存在することを確認できます。
auth0 events show <EVENT_STREAM_ID>
ストリームが有効になったら、Event Stream をテストできます。詳細については、イベントのテスト、可観測性、障害復旧を参照してください。

Auth0 Actions

以下では、Auth0 Actions を使用して Event Stream を作成して有効化する方法を説明します。

Event Streamを作成する (Actions)

Event Streamを使用すると、Auth0 テナント内のリアルタイムな変更を取得し、処理のために外部システムへ送信できます。Event Streamを設定する前に、監視するイベントタイプを特定する必要があります。この例では Auth0 CLI を使用して、user.created イベントをサブスクライブするEvent Streamを作成します。このイベントは、テナントに新しいユーザーが登録されるたびにトリガーされます。
auth0 event-streams create \
  --name actions-1 \
  --type action \
  --subscriptions "user.created,user.updated,user.deleted" \
  --configuration '{"action_id":"385db79f-28a4-43d9-909d-6f5511dd6632"}'
成功すると、この呼び出しはEvent Streamの id を含む次の JSON を返します。新しいEvent Streamはデフォルトで有効になっています。
{
    "configuration": {
      "action_id": "act_xyz789...",
      "status": "enabled"
  }
}

詳細情報