Python Lambda fornisce botocore.errorfactory.InvalidLambdaResponseException quando attivato dopo la conferma

Aug 24 2020

Ho configurato la funzione AWS Lambda che viene attivata su AWS Cognito. Il trigger su una conferma di posta elettronica di successo. La funzione Lambda è in Python3.6.

Mi riferisco alla documentazione AWS per il trigger postConfirmation di Cognito. https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

Finora ho provato a restituire None, {}, '{}' (stringa json vuota) o un dizionario valido come {'status': 200, 'message': 'the message string'} ma dà un errore.

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

Quale dovrebbe essere una risposta valida per la funzione di conferma del post? ecco la parte del codice.

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.

Risposte

2 kerasbaz Aug 23 2020 at 23:54

È necessario restituire l'oggetto evento:

return event

Questo non è ovvio negli esempi forniti nella documentazione. Potresti voler controllare e assicurarti che l'oggetto evento contenga una chiave di risposta (dovrebbe).