AWS Cognito用户列表:Lambda

时间:2019-06-25 13:38:34

标签: amazon-web-services aws-lambda amazon-cognito

我正在使用AWS的一个节点应用程序上工作。现在,我想获取所有Cognito用户,但根据doc,它会返回前60个用户,但我希望所有用户。你能帮我吗?在doc中,他们提到传递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 个答案:

答案 0 :(得分:1)

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

如果您的环境支持,您可能要考虑切换到Promise并进行异步/等待。这样可以使这些代码更易于阅读和编写。

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