前提条件
- ユーザーのインポート先となるデータベース接続を設定し、少なくとも 1 つのアプリケーションで有効にします。
- パスワードをインポートする場合は、サポートされているアルゴリズムのいずれかでハッシュ化されていることを確認してください。サポート対象外のアルゴリズムでハッシュ化されたパスワードを持つユーザーは、一括インポート後の初回ログイン時にパスワードをリセットする必要があります。
- の登録情報をインポートする場合は、サポートされている種類 (
email、phone、totp) であることを確認してください。 - ジョブエンドポイントへのリクエスト用に Management API トークンを取得します。
Auth0 テナントのエクスポートファイルを使用する場合は、エクスポートしたファイルを
ndjson から JSON に変換する必要があります。同じユーザー ID を維持するには、インポートするすべてのユーザー ID から auth0| prefix を削除する必要があります。インポート処理では、インポートしたユーザー ID に auth0| prefix が自動的に追加されます。インポート前に auth0| プレフィックスを削除しない場合、ユーザー ID は auth0|auth0|... として返されます。ユーザー用の JSON ファイルを作成する
fs.readFileSync ではなく fs.createReadStream を使用する必要があります。このエンドポイントでは、JSON ファイル全体ではなく、パイプされた読み取りストリームが必要です。
JSON ファイルのスキーマの詳細と例については、Bulk Import Database Schema and Examples を参照してください。
一括インポートのファイルサイズ上限は 500KB です。データがこのサイズを超える場合は、複数回に分けてインポートを開始する必要があります。
一括ユーザーインポートをリクエストする
POST リクエストを送信します。MGMT_API_ACCESS_TOKEN、USERS_IMPORT_FILE.json、CONNECTION_ID、EXTERNAL_ID の各プレースホルダー値は、必ずそれぞれ Management API 、ユーザーの JSON ファイル、データベースの 接続 ID、外部 ID に置き換えてください。
| パラメーター | 説明 |
|---|---|
users | インポートするユーザーを含む JSON 形式のファイル。 |
connection_id | ユーザーの挿入先となる接続の ID。ID は GET /api/v2/connections エンドポイントで取得できます。 |
upsert | ブール値。デフォルトは false です。false に設定すると、メールアドレス、ユーザー ID、電話番号、または username が一致する既存ユーザーのインポートは失敗します。true に設定すると、メールアドレスが一致する既存ユーザーは更新されますが、更新できるのは upsert 可能な属性のみです。インポート時に upsert できるユーザープロファイルフィールドの一覧については、User Profile Structure: User profile attributes を参照してください。注: インポートファイルに重複するユーザーエントリが含まれていると、エラーが発生します。この場合、Auth0 は挿入後に更新を行うことはありません。 |
external_id | 省略可能なユーザー定義の文字列で、複数のジョブを関連付けるために使用できます。ジョブステータスレスポンスの一部として返されます。 |
send_completion_email | ブール値。デフォルトは true です。true に設定すると、インポートジョブの完了時にすべてのテナント所有者へ完了メールが送信されます。メールを送信したくない場合は、このパラメーターを明示的に false に設定する必要があります。 |
send_completion_email が true に設定されている場合、テナント管理者に、そのジョブの成功または失敗を通知するメールが送信されます。たとえば、失敗したジョブに関するメールでは、ユーザーのインポート時にユーザー JSON ファイルを解析できなかったことが管理者に通知される場合があります。
同時実行されるインポートジョブ
429 Too Many Requests レスポンスが返されます。
ジョブのステータスを確認する
GET リクエストを送信します。MGMT_API_ACCESS_TOKEN と JOB_ID のプレースホルダーは、それぞれ Management API アクセストークンとユーザーインポートジョブ ID に置き換えてください。
ユーザーインポートジョブのステータスに応じて、次のいずれかのようなレスポンスが返されます。
保留中
ジョブのタイムアウト
失敗したエントリを取得する
GET リクエストを送信して、エラーの詳細を取得できます。MGMT_API_ACCESS_TOKEN と JOB_ID のプレースホルダーは、それぞれ Management API アクセストークンとユーザーインポートジョブ ID に置き換えてください。
リクエストが成功すると、次のようなレスポンスが返されます。レスポンスでは、hash.value などの機密フィールドはマスクされます。
- ANY_OF_MISSING
- ARRAY_LENGTH_LONG
- ARRAY_LENGTH_SHORT
- CONFLICT
- CONFLICT_EMAIL
- CONFLICT_USERNAME
- CONNECTION_NOT_FOUND
- DUPLICATED_USER
- ENUM_MISMATCH
- FORMAT
- INVALID_TYPE
- MAX_LENGTH
- MAXIMUM
- MFA_FACTORS_FAILED
- MIN_LENGTH
- MINIMUM
- NOT_PASSED
- OBJECT_REQUIRED
- PATTERN
大規模移行のベストプラクティス
ファイルサイズとチャンク化
ジョブのスケジューリングと同時実行
- インポートジョブを計画的にスケジュールする
- 必要な同時実行数の上限を適用する
- 中断された場合に途中から再開できるよう、インポートの進行状況を追跡する
- ジョブの履歴と現在のステータスを維持する
エラー処理戦略
- 1 人のユーザーの失敗でインポート処理を中断しないでください。すべてのユーザーをインポートし、問題は後で対処します。
- 生成されたすべてのジョブを確認し、失敗したレコードを新しいファイルにまとめる「finalizer」ジョブを実装します。
- 収集した失敗レコードのエラーを修正し、新しいジョブとしてインポートします。
- ネットワーク接続の切断や一時的な障害に対処できるよう、再試行戦略を含めます。
Upsert モードに関する注意事項
upsert モードを有効にする際は注意してください。
- upsert を使用したインポートは、標準のインポートよりも低速です。
- Upsert モードでは、
user_metadataやapp_metadataのマージはサポートされません。既存のメタデータは新しい値で完全に上書きされます。 - Upsert モードは、既存のユーザーを更新する必要があり、これらの制限を理解している場合にのみ使用してください。