如何识别 cognito id 属于使用 boto3 的池?

how to identify a cognito id belongs to a pool using boto3?

使用波纹管代码我得到一个 OpenID token 一个 IdentityId.

import boto3
cognito_client = boto3.client('cognito-identity')
data = {'IdentityPoolId': identity_pool_id,
        'Logins': logins,
        'TokenDuration': 24 * 60 * 60,
        'IdentityId': identity_id}
cognito_client.get_open_id_token_for_developer_identity(
            **data)

但是我有两个 IdentityPoolId,所以我需要为给定的 IdentityId 确定合适的 IdentityPoolId
使用 boto3 库如何识别 IdentityId 是否属于 IdentityPoolId

如果您只有 IdentityId 值,则需要使用 Cognito-Identity 客户端的 list_identities() 函数从池中获取所有 ID,然后确定您的 ID 是否是游泳池的一部分。

https://boto3.readthedocs.io/en/latest/reference/services/cognito-identity.html#CognitoIdentity.Client.list_identities

import boto3

def getPoolID(boto3Client,PoolIDs,idVal):
    For PoolID in PoolIDs: 
        response = boto3Client.list_identities(IdentityPoolId=PoolID)   
        for ID in response['Identities']:
            if idVal == ID['IdentityId']:
                return PoolID

cognitoClient = boto3.client('cognito-identity')
PoolIDList=['PoolID1','PoolID2'] 
IdentityIdToCheck='Value'
FinalPoolID = getPoolID(cognitoClient,PoolIDList,IdentityIdToCheck)
print FinalPoolID

您可能需要根据 ID 池中的 ID 数量调整获取响应的方式,因为您可能需要对记录进行分页