- 自社で持つ認証基盤のCognitoへの移行を検討する際に、自サービスのユーザーデータのCognito ユーザープールへの一括移行手段について調査した。
CSVインポート
- CSVファイルに自サービスで持つユーザー情報を入力し、そのCSVファイルをCognitoへインポートさせることでデータ移行を行う方法。
手順
1. ユーザーインポート .csv ファイルの作成
-
ユーザーインポート .csv ヘッダー情報をCognitoコンソールからダウンロードする。
※AWS CLIからも取得可能
-
.csv ファイルのフォーマットの条件に一致させるようにインポートファイルを作成する。
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
※フォーマット入力条件については、公式ドキュメント参照のこと。最大行数が500,000などいくつか制約があるため、移行検討には工数を取って慎重に実施したほうがよさそう。
2. ユーザープールインポートジョブを作成し実行する
- ジョブ名、IAM、CSVファイルを指定してジョブを作成する。
- ジョブを開始する。
- ジョブのステータスが「成功」になれば、インポート成功。
※AWS CLIからも実行可能。
3. ユーザーにパスワードの再設定を要求する
- ユーザーにパスワードリセット要求通知を送信する。
- ユーザーは、パスワードリセットを行う。
※インポート直後のユーザーのステータスは、FORCE_CHANGE_PASSWORD
(パスワード変更必須状態)になる。そのため、ユーザーがパスワードリセットをして初めて利用可能になる。Cognito APIを使用した作りこみが必須。
その他
- インポート失敗時の解析には、CloudWatch Logsで確認する。