La documentation indique que vous pouvez obtenir l'utilisateur comme suit:
response = client.list_users(
UserPoolId='string',
AttributesToGet=[
'string',
],
Limit=123,
PaginationToken='string',
Filter='string'
)
from:https://boto3.readthedocs.io/en/latest/reference/services/cognito-idp.html#CognitoIdentityProvider.Client.list_users
import boto3
client = boto3.client('cognito-idp')
response = client.list_users(
UserPoolId='YOUR_USER_POOL_ID'
)
Si vous spécifiez uniquement l'ID du pool d'utilisateurs, les 60 premiers tous les utilisateurs </ s> seront renvoyés.
J'ai pensé "Si vous ne spécifiez pas Limit, vous obtiendrez tous les enregistrements", mais il semble que seuls les 60 premiers enregistrements sont acquis.
En écrivant ʻemail = "hoge" `dans Filtre, vous ne pouvez rechercher que les utilisateurs avec l'adresse e-mail correspondante.
import boto3
client = boto3.client('cognito-idp')
response = client.list_users(
UserPoolId='YOUR_USER_POOL_ID',
Filter="email = \"hide\"",
)
Dans cet exemple, nous obtiendrons tous les utilisateurs qui utilisent des adresses e-mail contenant les caractères «hide».
En définissant ^ =
au lieu de =
, vous pouvez également rechercher des "adresses e-mail commençant par hide".
Filter
Vous ne pouvez rechercher que des attributs standard. Les attributs personnalisés ne peuvent pas être recherchés. En effet, seuls les attributs indexés peuvent être recherchés et les attributs personnalisés ne peuvent pas être indexés. http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/how-to-manage-user-accounts.html#cognito-user-pools-searching-for-users-using-listusers-api
Il semble que la recherche d'utilisateurs à l'aide d'attributs personnalisés n'est actuellement pas prise en charge.
Il semble préférable de stocker les attributs que vous souhaitez rechercher dans DynamoDB ou AES (Amazon Elasticsearch Service).
Vous pouvez réduire le nombre d'acquisitions en spécifiant un nombre dans la requête Limite
.
import boto3
client = boto3.client('cognito-idp')
response = client.list_users(
UserPoolId='YOUR_USER_POOL_ID',
Limit=10,
)
Si vous essayez d'acquérir 61 ou plusieurs données à la fois et définissez la limite sur une valeur de 61 ou plus, une erreur se produit.
ClientError: An error occurred (InvalidParameterException) when calling the ListUsers operation: 1 validation error detected: Value '500' at 'limit' failed to satisfy constraint: Member must have value less than or equal to 60
Je pense qu'il serait préférable de faire un appel récursif comme celui-ci.
def getUser():
client = boto3.client('cognito-idp')
response = self.client.list_users(
UserPoolId="YOUR_USERPOOL_ID"
)
return response
def getUsersWithPagenation(PaginationToken):
response = self.client.list_users(
UserPoolId="YOUR_USERPOOL_ID",
PaginationToken=PaginationToken
)
return response
def workerNode(users):
for user in users["Users"]:
# Do Something
if 'PaginationToken' in users:
newUsers = getUsersWithPagenation(users["PaginationToken"])
workerNode(newUsers)
users = getUser()
workerNode(users)
Recommended Posts