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
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.
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.
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.
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,
)
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