Amazon Cognito

Amazon Cognito のユーザプールのバックアップおよびリストアを行う方法

  • POST
Amazon Cognito のユーザプールのバックアップおよびリストアを行う方法について調査した内容を備忘録として残しておく 方法 以下の2つの方法が考えられる Cognito User Profiles Export リファレンスアーキテクチャ Lambda でユーザプールの一覧を取得して csv で出力して S3 に保存する ※リストアはユーザ CSV インポート機能で行う 実際のコード const { stringify } = require("csv-stringify/sync"); module.exports = async (params) => { const csvString = stringify(params, { header: true, quoted_string: false }) return csvString; }; const { CognitoIdentityProvider } = require("@aws-sdk/client-cognito-identity-provider"); const cognito = new CognitoIdentityProvider(); module.exports = async (param) => { let cognitoUsers = new Array(); let cognitoData; try { let params = { UserPoolId: process.env.USER_POOL_ID, }; let paginationToken = ""; while (paginationToken !== undefined) { cognitoData = await cognito.listUsers(params); paginationToken = cognitoData.PaginationToken; params.PaginationToken = paginationToken; if (cognitoData.Users.length > 0) { cognitoData.Users.forEach((user) => { // ① を参照 let userAttributes = {}; userAttributes["email"] = (user["Attributes"].find(attr => attr["Name"] === "email") || {})["Value"] || ""; userAttributes["email_verified"] = (user["Attributes"].find(attr => attr["Name"] === "email_verified") || {})["Value"]; userAttributes["cognito:mfa_enabled"] = "FALSE"; userAttributes["cognito:username"] = userAttributes["email"]; cognitoUsers.push(userAttributes); }); } else { console.error("登録ユーザーが存在しません。"); return cognitoUsers; } } } catch (error) { console.error(error); return cognitoUsers; } return cognitoUsers; }; ※① CSV ファイルヘッダーのダウンロード (AWS CLI)で必要な項目を取得して設定する