[Node.js]Cognito User Poolsのユーザーをまとめて取ってくる

たまに集計などで欲しくなるので、覚書。 基本的にasync / awiat と再帰呼び出しでぶん回すだけです。 アクティブなユーザーを取ってくる listUsersAPIを使う。60件までしかとれないので注意。 特定のグ […]

広告ここから
広告ここまで

目次

    たまに集計などで欲しくなるので、覚書。

    基本的にasync / awiat と再帰呼び出しでぶん回すだけです。

    アクティブなユーザーを取ってくる

    listUsersAPIを使う。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
    }

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark