def find_auth_provider()

in refarch/aws-native/streaming/streaming_cdk/cognito-lambda/handler.py [0:0]


def find_auth_provider(region, user_pool_id):
    """
    Find the client with name starting with 'AWSElasticsearch'
    :param region: The region for Cognito
    :param user_pool_id: The User Pool ID
    :return: The Authentication Provider 'cognito-idp.<region>.amazonaws.com/<user_pool_id>:<client>'
    """
    logger.info('Processing UserPool %s' % user_pool_id)

    client_idp = boto3.client('cognito-idp')

    response = client_idp.list_user_pool_clients(
        UserPoolId=user_pool_id
    )

    clients = response['UserPoolClients']

    # Find the client for AESElasticsearch
    for c in clients:
        logger.info('Found App Client %s' % c['ClientName'])

    aes_clients = [c for c in clients if c['ClientName'].startswith('AWSElasticsearch')]

    if len(aes_clients) == 0:
        logging.error('Could not find Amazon Elasticsearch App Client in User Pool %s' % user_pool_id)
        return None

    if len(aes_clients) > 1:
        logging.error('Found multiple Amazon Elasticsearch App Client in User Pool %s' % user_pool_id)
        return None

    client = aes_clients[0]

    return 'cognito-idp.' + region + '.amazonaws.com/' + user_pool_id + ':' + client['ClientId']