[PYTHON] [Boto3] Suchen Sie mit der List Users API nach Cognito-Benutzern

Die Dokumentation besagt, dass Sie den Benutzer wie folgt erhalten können:

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

Holen Sie sich 60 Benutzer

import boto3
client = boto3.client('cognito-idp')
response = client.list_users(
    UserPoolId='YOUR_USER_POOL_ID'
)

Wenn Sie nur die Benutzerpool-ID angeben, werden die ersten 60 aller Benutzer </ s> zurückgegeben. Ich dachte "Wenn Sie kein Limit angeben, erhalten Sie alle Datensätze", aber es scheint, dass nur die ersten 60 Datensätze erfasst werden.

Suche nach E-Mail-Adresse

Durch Schreiben von "email =" hoge "" in Filter können Sie nur Benutzer mit der entsprechenden E-Mail-Adresse suchen.

import boto3
client = boto3.client('cognito-idp')
response = client.list_users(
    UserPoolId='YOUR_USER_POOL_ID',
    Filter="email = \"hide\"",
)

In diesem Beispiel erhalten wir alle Benutzer, die E-Mail-Adressen verwenden, die die Zeichen "hide" enthalten.

Durch Setzen von ^ = anstelle von=können Sie auch nach" E-Mail-Adressen beginnen, die mit Ausblenden beginnen "suchen.

Tipps: Benutzerdefinierte Attribute können nicht mit "Filter" durchsucht werden

Sie können nur nach Standardattributen suchen. Benutzerdefinierte Attribute können nicht durchsucht werden. Dies liegt daran, dass nur indizierte Attribute durchsucht werden können und benutzerdefinierte Attribute nicht indiziert werden können. 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

Es scheint, dass die Benutzersuche mit benutzerdefinierten Attributen derzeit nicht unterstützt wird.

Es scheint besser, die Attribute, die Sie suchen möchten, in DynamoDB oder AES (Amazon Elasticsearch Service) zu speichern.

Holen Sie sich die Top 10 Benutzer

Sie können die Anzahl der Erfassungen eingrenzen, indem Sie in der Abfrage "Limit" eine Anzahl angeben.

import boto3
client = boto3.client('cognito-idp')
response = client.list_users(
    UserPoolId='YOUR_USER_POOL_ID',
    Limit=10,
)

Tipps: Das Limit beträgt 60

Wenn Sie versuchen, 61 oder mehr Daten gleichzeitig zu erfassen und Limit auf einen Wert von 61 oder mehr zu setzen, tritt ein Fehler auf.

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

Ich denke, es wäre besser, einen rekursiven Aufruf wie den folgenden zu tätigen.

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

[Boto3] Suchen Sie mit der List Users API nach Cognito-Benutzern
Holen Sie sich eine Liste der IAM-Benutzer mit Boto3
Suchliste nach doppelten Elementen
Rufen Sie die API mit python3 auf.
Klicken Sie mit Python auf die Etherpad-Lite-API
Suchen Sie mit opencv nach phasenidentischen zusammengesetzten Wörtern
Python> sys.path> Liste der Zeichenfolgen, die den Pfad für die Suche nach Modulen angeben
Versuchen Sie, eine E-Mail mit der Google Mail API-Clientbibliothek für Java zu senden
Suchen Sie mit tweepy nach Twitter-Keywords und schreiben Sie die Ergebnisse in Excel
Suchen Sie nach Synonymen aus der Wortliste (csv) von Python Japanese WordNet
Ich habe die Geschwindigkeit der Listeneinschlussnotation für und während mit Python2.7 gemessen.
Greifen Sie mit Requests auf die Docker Remote API zu
Berühren Sie die Twitter-Liste mit Tweepy
Fragen Sie mit dem Befehl bc nach Pi
Ändern Sie die Liste in der for-Anweisung
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Heat Map für die Rastersuche mit Matplotlib
Die dritte Nacht der Runde mit für
Holen Sie sich Urlaub mit der Google Kalender-API
Die zweite Nacht der Runde mit für
Spielen Sie mit Dajare mithilfe der COTOHA-API
[Lernen stärken] Suche nach der besten Route
Holen Sie sich eine Liste der Artikel, die von Benutzern mit Python 3 Qiita API v2 veröffentlicht wurden
Suchen Sie im aktuellen Verzeichnis nach Dateien mit dem Zeilenvorschubcode CR + LF
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Nachdem Sie mit Python auf die Qiita-API geklickt haben, um eine Liste mit Artikeln für Anfänger zu erhalten, werden wir die Artikel von God besuchen
Ich habe in der Bibliothek nach der Verwendung der Gracenote-API gesucht
Erstellt einen Python-Wrapper für die Qiita-API
Kausales Denken und kausale Suche von Python (für Anfänger)
Belichtung des DCGAN-Modells für Cifar 10 mit Keras
Bis Sie die Kaggle-API mit Colab verwenden
Verwenden Sie vorerst Logger mit Python
Ich habe vorerst mit Floydhub gespielt
Tipps zum Erreichen der ATND-API mit Python
Holen Sie sich ein Zugriffstoken für die Pocket-API
Verwalten Sie AWS mit der Python-Bibliothek Boto
Suchen Sie nach dem Wert der Instanz in der Liste
Beschreibe ec2 mit boto3 und rufe den Wert ab
Sammeln Sie Bilder für maschinelles Lernen (Bing Search API)
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
Erstellen Sie einen API-Server, um den Betrieb der Front-Implementierung mit Python3 und Flask zu überprüfen
[Für Anfänger] Anzeigen von Karten und Suchfeldern mithilfe der GoogleMap Javascript-API