我需要列出cognito用户池的所有用户。是否有任何方法返回用户池的所有用户?
下面代码中类似boto3-client的list_users函数只返回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对象列表,其中包括cognito用户组的所有用户
你看到了预期的结果。一次可以请求60个或更少的用户。您需要使用分页令牌才能遍历用户池中存在的所有用户。具体参见API文档Limit
和PaginationToken
参数(重点):
要返回的最大用户数。
类型:整数
有效范围:最小值为0。最大值为60
必填项:否
和
从上次调用此操作返回的标识符,可用于返回列表中的下一组项。
类型:字符串
长度限制:最小长度为1。
模式:[\S]
必需:否
@A. Khan的答案是正确的。下面我已经编码了1种方法来做到这一点:
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