CognitoのユーザープールにCSVを使ってユーザーを追加する

コンニチハ、千葉です。

Cognitoのユーザープールにユーザーを追加するときに、手動で1個1個追加するのは大変なので、CSVを使って一括登録を試してみました。

やってみた

まず、初めにユーザープール用のファイル(ヘッダが書かれているもの)をダウンロードします。「ユーザーをインポート」をクリックします。

「CSVヘッダーのダウンロード」からファイルをダウンロードします。

ファイルの中身はヘッダです。このファイルの2行目からユーザー情報を追記し、アプロードします。

$ cat headers.csv
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,cognito:username

今回はメールアドレスだけあればokなので、以下のようにファイルを作成しました。エクセルで作って、CSVで出力します。 必要最低限の箇所だけ入力します。

  • email:ユーザーのメールアドレス
  • email_verified:メールアドレスは検証済みのためtrue
  • phone_number_verified:電話番号は今回は利用しないのでfalse
  • cognito:mfa_enabled:MFAは今回利用しないのでfalse
  • cognito:username:ユーザーのメールアドレス
cat headers.csv
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,cognito:username
,,,,,,,,,xxx@xxx.jp,TRUE,,,,,,FALSE,,,FALSE,xxx@xxx.jp

作成したCSVを指定してジョブを作成しインポートします。

ジョブ名、IAM、CSVファイルを指定してジョブを作成します。

インポートが成功し、ユーザーが登録されました。

インポートのログは、CloudWatch Logsで確認できます。何か エラー になった場合はこちらを確認しましょう。

最後に、ログイン画面からユーザーのパスワード変更を行います。実際の運用ではユーザーに、パスワードリセットしてという通知をし、ユーザーにリセット作業を実施してもらいましょう。

注意事項

インポート後のユーザーステータスは FORCE_CHANGE_PASSWORD です。ユーザーがパスワードリセットをして初めて利用できます。CSVでのパスワードインポートはセキュリティ上サポートされていません。 基本的に、CSVでインポートしたユーザーはパスワードリセットをした後にログインできるようになります。また、Cognitoから何か通知されるわけではありません。そのため、CSVインポートする場合は以下の運用が必要になります。

  1. CSVでユーザーをインポート
  2. インポートしたユーザーに、ログインURL、ログインID、パスワードリセット手順を伝える
  3. ユーザーがパスワードリセット完了しているかステータスで確認

ユーザーのステータスの種類は以下です。

  • FORCE_CHANGE_PASSWORD:パスワードのリセットが完了していない
  • CONFIRMED:パスワードが変更されて利用可能な状態

さいごに

CognitoユーザープールへCSVを使ってユーザーを作成してみました。簡単にインポートできますね。他にも色々機能があるので触っていきます。

参考