Python Lambda gibt botocore.errorfactory.InvalidLambdaResponseException aus, wenn es nach der Bestätigung ausgelöst wird

Aug 24 2020

Ich habe eine AWS Lambda-Funktion eingerichtet, die auf einem AWS Cognito ausgelöst wird. Der Auslöser für eine erfolgreiche E-Mail-Bestätigung. Die Lambda-Funktion ist in Python3.6.

Ich beziehe mich auf die AWS-Dokumentation für den Cognito-PostConfirmation-Trigger. https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

Bisher habe ich versucht, None, {}, '{}' (leere JSON-Zeichenfolge) oder ein gültiges Wörterbuch wie {'status': 200, 'message': 'the message string'} zurückzugeben, aber es wird ein Fehler ausgegeben.

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

Was sollte eine gültige Antwort für die Post-Bestätigungsfunktion sein? Hier ist der Teil des Codes.

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.

Antworten

2 kerasbaz Aug 23 2020 at 23:54

Sie müssen das Ereignisobjekt zurückgeben:

return event

Dies ist in den Beispielen in der Dokumentation nicht ersichtlich. Möglicherweise möchten Sie überprüfen, ob das Ereignisobjekt einen Antwortschlüssel enthält (dies sollte der Fall sein).