【问题标题】:aws cognito list-users function only returns 60 usersaws cognito list-users 函数仅返回 60 个用户
【发布时间】:2019-06-20 09:12:51
【问题描述】:

我需要列出 cognito 用户池的所有用户。 有没有办法返回用户池的所有用户

boto3-client 的 list_users-function 像下面的代码只返回 60 个用户,而不是全部。

client = boto3.client('cognito-idp',
                         region_name=aws_region,
                         aws_access_key_id=aws_access_key,
                         aws_secret_access_key=aws_secret_key,
                         config=config)

print('Setup client')

response = client.list_users(
UserPoolId=userpool_id,
AttributesToGet=[
    'email','sub'
] 
)

预期的结果是包含认知用户组的所有用户的 json-objects 列表

【问题讨论】:

    标签: python amazon-web-services boto3 amazon-cognito


    【解决方案1】:

    您正在看到预期的结果。您一次可以请求 60 个或更少的用户。您将需要使用分页令牌才能遍历用户池中存在的所有用户。请参阅API documentation 特别是LimitPaginationToken 参数(强调我的):

    限制

    要返回的最大用户数。

    类型:整数
    有效范围:最小值 0。最大值 60。
    必需:否

    分页令牌

    上一次调用返回的标识符 到此操作,可用于返回下一组项目 在列表中。

    类型:字符串
    长度约束:最小长度为 1。
    图案:[\S]+
    必需:否

    【讨论】:

      【解决方案2】:

      @A.Khan 的回答是正确的。下面我编写了一种方法来做到这一点:

      def get_all_users():
          cognito = boto3.client('cognito-idp')
          
          users = []
          next_page = None
          kwargs = {
              'UserPoolId': "whatever_your_user_pool_id_is"
          }
      
          users_remain = True
          while(users_remain):
              if next_page:
                  kwargs['PaginationToken'] = next_page
              response = cognito.list_users(**kwargs)
              users.extend(response['Users'])
              next_page = response.get('PaginationToken', None)
              users_remain = next_page is not None
      
         return users
      

      【讨论】:

      • 更新 - 使用 NextTokenPaginationToken 失败)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2020-12-12
      • 2018-07-17
      • 2018-03-23
      • 2019-05-07
      • 2019-04-02
      • 2018-06-11
      相关资源
      最近更新 更多