AWS Cognito用户列表:Lambda



我正在使用一个使用AWS的节点应用程序。现在,我想获得所有Cognito用户,但是根据DOC,它将返回前60位用户,但我想要所有用户。你能帮我吗?在文档中,他们提到了PaginationToken(字符串(。但是我不知道该怎么办。

到目前为止我所做的事情:

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

在您的响应中,您应该看到一个称为 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();

最新更新