async function listCognitoUsers()

in source/workflow-export/export-users.js [108:150]


async function listCognitoUsers(paginationToken, context) {
  let cognitoResponse;

  do {
    let numAttempts = 1;

    try {
      const listUsersParams = {
        UserPoolId: USER_POOL_ID
      };

      if (paginationToken && paginationToken !== '') {
        listUsersParams.PaginationToken = paginationToken;
      }

      console.log(`Listing users: ${JSON.stringify(listUsersParams)}`);
      cognitoResponse = await cognitoIdentityServiceProvider.listUsers(listUsersParams).promise();
    } catch (err) {
      console.error(err);

      if (context.getRemainingTimeInMillis() > ONE_MINUTE && err.retryable) {
        const sleepTimeInMs = getExponentialBackoffTimeInMS(100, numAttempts, ONE_MINUTE, false);
        numAttempts++;
        console.log(`Sleeping for ${sleepTimeInMs} milliseconds and will list users again. That will be attempt #${numAttempts}`);
        await sleep(0, sleepTimeInMs);
      } else {
        throw err;
      }
    }
  } while (!cognitoResponse && context.getRemainingTimeInMillis() > ONE_MINUTE);

  if (cognitoResponse.Users && cognitoResponse.Users.length > 0) {
    return {
      users: cognitoResponse.Users.filter(user => user.UserStatus !== 'EXTERNAL_PROVIDER'),
      paginationToken: cognitoResponse.PaginationToken
    };
  }

  return {
    users: [],
    paginationToken: undefined
  };
}