Список пользователей AWS cognito: лямбда - PullRequest
1 голос
/ 25 июня 2019

Я работаю над приложением с одним узлом, которое использует AWS. Теперь я хочу получить всех пользователей Cognito, но согласно документу он возвращает первых 60 пользователей, но я хочу всех пользователей Вы можете помочь мне с этим? В документе они упоминали, что передают PaginationToken (string). но я не знаю, что в нем передать.

Вот что я сделал до сих пор:

exports.handler = (event, context, callback) => {
        const requestBody = JSON.parse(event.body);
        var params = {
                "UserPoolId": "****************",
                "Limit": 60,
                "PaginationToken" : (what to pass here????),
        }
        const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
        cognitoidentityserviceprovider.listUsers(params, (err, data) => {
            if (err) {
                callback(null, { headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" }, body: JSON.stringify({ statusCode: 405, data: err }) });
            } else {
                console.log(data);
                let userdata = [];
                for(let i=0; i<data.Users.length;i++){
                    // console.log(data.Users[i].Attributes);
                    userdata.push(getAttributes(data.Users[i].Attributes));
                }
                 callback(null, { headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" }, body: JSON.stringify({ statusCode: 200, data: userdata }) });

            }
        });
};

function getAttributes(attributes){
    let jsonObj = {};
    attributes.forEach((obj) => {
        jsonObj[obj.Name] = obj.Value;
    });
    return jsonObj;
}

1 Ответ

1 голос
/ 25 июня 2019

В вашем ответе вы должны увидеть свойство с именем PaginationToken.Если вы сделаете тот же звонок, но включите это значение в params, вы получите следующие 60 пользователей.Вот концепция:

cognitoidentityserviceprovider.listUsers(params, (err, data) => {
    // data.Users is the first 60 users
    params.PaginationToken = data.PaginationToken;
    cognitoidentityserviceprovider.listUsers(params, (err, data) => {
        // data.Users is the next 60 users
    });
});

Возможно, вы захотите переключиться на обещания и выполнить асинхронное / ожидание, если ваша среда это поддерживает.Это облегчит чтение и запись этого кода.

const data = await cognitoidentityserviceprovider.listUsers(params).promise();
params.PaginationToken = data.PaginationToken;
const data2 = await cognitoidentityserviceprovider.listUsers(params).promise();
...