アイデンティティデータを同期する理由
- Management APIを呼び出さずに、分析、レポート作成、コンプライアンス対応のためのクエリを実行する。
- ユーザー属性を横断して低遅延で検索する必要がある検索機能を実現する。
- アイデンティティレコードを他の業務データと結合するデータパイプラインにデータを提供する。
- 災害復旧に備えて、ユーザープロファイルの状態をバックアップしておく。
仕組み
- ユーザープロファイルが変更されるたびに、Auth0 はイベントを発行します。
- Event Stream がそのイベントを送信先 (webhook、AWS EventBridge、または Auth0 Action) に配信します。
- ハンドラーがイベントタイプを確認し、対応する書き込み処理を外部システムに適用します。
前提条件
- Events が有効な Auth0 テナント。利用可能なプランについて詳しくは、Create an Event Stream を参照してください。
user.created、user.updated、user.deletedをサブスクライブしている有効な Event Stream。詳しくは、Create an Event Stream を参照してください。- ハンドラーから書き込み可能な外部データストア (例: PostgreSQL、MySQL、データウェアハウス) 。
Implement でデータ同期を行う
user.created を処理する
user.created イベントを発行したら、データベースに新しい行を追加します。
user.updated を処理する
user.updated イベントを発行したら、該当する行を更新します。古いデータで上書きしないよう、イベントのタイムスタンプを last_event_processed 列と比較してください。
イベントは順番どおりに届かないことがあります。古いデータで新しいレコードが上書きされるのを防ぐため、更新を適用する前に必ずタイムスタンプを比較してください。詳しくは、Events Best Practicesをご覧ください。
user.deleted を処理する
user.deleted イベントを発行したら、該当する行を削除するか、論理削除します。
タイプ別にイベントをルーティングする
- Webhook
- Auth0 Action
HTTP
2XX レスポンスは、できるだけ早く返してください。ハンドラーで時間のかかる処理を行う必要がある場合は、イベントを内部キューに入れて非同期で処理してください。詳しくは、Events Best Practices を参照してください。重複や順序の問題に備える
- イベント ID を追跡する。 処理した各イベントの
idを保存し、すでに処理済みのイベントはスキップします。 - タイムスタンプを比較する。 各イベントのペイロードには、
data.objectのcreated_atフィールドとupdated_atフィールドが含まれます。これらのフィールドを使って、受信したイベントがシステムにすでに記録されているものより新しいかどうかを判断します。 - 冪等な書き込みを使う。 同じイベントを2回適用しても結果が変わらないように、データベース操作を設計します。たとえば、PostgreSQL では
INSERT ... ON CONFLICT DO UPDATEを使用します。
同期を確認する
- 正しいプロフィールデータを持つ新しい行が外部データベースに作成されること。
- Auth0 でユーザーの名前またはメールアドレスを更新し、その変更がデータベースの行に反映されることを確認します。
- Auth0 でユーザーを削除し、データベース内の行も削除される (または削除済みとしてマークされる) ことを確認します。