Python Lambda dando botocore.errorfactory.InvalidLambdaResponseException cuando se activa después de la confirmación

Aug 24 2020

He configurado la función AWS Lambda que se activa en un AWS Cognito. El desencadenante de una confirmación por correo electrónico exitosa. La función Lambda está en Python3.6.

Me refiero a la documentación de AWS para el disparador posterior a la confirmación de Cognito. https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

Hasta ahora he intentado devolver None, {}, '{}' (cadena json vacía) o un diccionario válido como {'status': 200, 'message': 'the message string'} pero está dando un error.

botocore.errorfactory.InvalidLambdaResponseException: An error occurred (InvalidLambdaResponseException) when calling the ConfirmSignUp operation: Unrecognizable lambda output

¿Cuál debería ser una respuesta válida para la función de confirmación posterior? aquí está la parte del código.

from DBConnect import user

import json

def lambda_handler(event, context):

    ua = event['request']['userAttributes']
    print("create user ua = ", ua)
    if ('name' in ua):
        name = ua['name']
    else:
        name = "guest"
    newUser = user.create(
        name = name,
        uid = ua['sub'],
        owner = ua['sub'],
        phoneNumber = ua['phone_number'],
        email = ua['email']
    )
    print(newUser)
    return '{}' #  <--- I am using literals here only.

Respuestas

2 kerasbaz Aug 23 2020 at 23:54

Debe devolver el objeto de evento:

return event

Esto no es obvio en los ejemplos que proporcionan en la documentación. Es posible que desee verificar y asegurarse de que el objeto de evento contenga una clave de respuesta (debería).