代码之家  ›  专栏  ›  技术社区  ›  Omar Himada

Cognito ListUsers将永远持续下去

  •  0
  • Omar Himada  · 技术社区  · 7 年前

    嘿,我写了一些代码来下载我的Cognito用户池中的所有用户,但它似乎永远在继续。我很确定我使用的分页标记是正确的。Cognito的UI估计我有大约10000个用户,但是我在我的循环和我的 List 已经超过50000了这是不合理的。

    非常感谢您的帮助!

            using (AmazonCognitoIdentityProviderClient provider = AuthorizedClient())
            {
                try
                {
                    List<UserType> users = new List<UserType>();
                    bool continueListing = true;
    
                    ListUsersResponse response = provider.ListUsers(
                        new ListUsersRequest
                        {
                            UserPoolId = UserPoolId,
                            Limit = 60,
                            AttributesToGet = new List<string>
                            {
                                "email"
                            }
                        });
    
                    users.AddRange(response.Users);
                    string paginationToken = response.PaginationToken;
                    while (continueListing)
                    {
                        response = provider.ListUsers(
                            new ListUsersRequest
                            {
                                UserPoolId = UserPoolId,
                                Limit = 60,
                                PaginationToken = paginationToken,
                                AttributesToGet = new List<string>
                                {
                                    "email"
                                }
                            });
    
                        if (response.Users.Count < 60)
                        {
                            continueListing = false;
                        }
                        else
                        {
                            paginationToken = response.PaginationToken;
                            users.AddRange(response.Users);
                        }
                    }
    
                    return users;
                }
                catch (Exception)
                {
                    //_session.NotifyUser(Notification.GeneralError());
                    //_logger.LogError(e.Message);
                }
    
                return null;
            }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Ryan Breece    7 年前

    不要从cognito中列出你的用户! 你将开始达到他们的api极限。 为你的用户轮询你的数据库,你有更多的控制权。