[Node.js]Cognito User Poolsのユーザーをまとめて取ってくる
たまに集計などで欲しくなるので、覚書。 基本的にasync / awiat と再帰呼び出しでぶん回すだけです。 アクティブなユーザーを取ってくる listUsersAPIを使う。60件までしかとれないので注意。 特定のグ […]
広告ここから
広告ここまで
目次
たまに集計などで欲しくなるので、覚書。
基本的にasync / awiat と再帰呼び出しでぶん回すだけです。
アクティブなユーザーを取ってくる
listUsers
APIを使う。60件までしかとれないので注意。
const AWS = require('aws-sdk')
const cognitoidp = new AWS.CognitoIdentityServiceProvider()
const listAllActiveUsers = async (token = '') => {
const params = {
UserPoolId: "USER_POOL_ID",
Limit: 60,
Filter: "cognito:user_status='CONFIRMED'"
}
if (token) params.PaginationToken = token
const data = await cognitoidp.listUsers(params).promise()
if (!data.PaginationToken) {
return data.Users
}
const nextItems = await listAllActiveUsers(data.PaginationToken)
const users = data.Users
Array.prototype.push.apply(users, nextItems)
console.log(users)
return users
}
特定のグループのみ取得する
Group指定の場合はlisstUsersInGroup
を使う。nextTokenのパラメータ名が違うので要注意。
const AWS = require('aws-sdk')
const cognitoidp = new AWS.CognitoIdentityServiceProvider()
const listAllActiveOwners = async (token = '') => {
const params = {
UserPoolId: "USER_POOL_ID",
Limit: 60,
GroupName: "GROUP_NAME"
}
if (token) params.NextToken = token
const data = await cognitoidp.listUsersInGroup(params).promise()
if (!data.NextToken) {
return data.Users
}
const nextItems = await listAllActiveOwners(data.NextToken)
const users = data.Users
Array.prototype.push.apply(users, nextItems)
return users
}