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
};
}