aws cognito list-users 函数仅返回 60 个用户

C.T*_*mas 4 python amazon-web-services amazon-cognito boto3

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

boto3 - 客户端的 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'
] 
)
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*ric 10

@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
Run Code Online (Sandbox Code Playgroud)


A.K*_*han 6

您正在看到预期的结果。您一次可以请求 60 个或更少的用户。您将需要使用分页令牌才能查看用户池中存在的所有用户。具体参见API 文档LimitPaginationToken参数(重点是我的):

限制

要返回的最大用户数。

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

分页令牌

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

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