Python Lambda podając botocore.errorfactory.InvalidLambdaResponseException po uruchomieniu po potwierdzeniu

Aug 24 2020

Skonfigurowałem funkcję AWS Lambda, która jest wyzwalana na AWS Cognito. Wyzwalacz po pomyślnym potwierdzeniu e-mailem. Funkcja Lambda jest w Pythonie 3.6.

Mam na myśli dokumentację AWS dotyczącą wyzwalacza Cognito postConfirmation. https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

Do tej pory próbowałem zwrócić None, {}, '{}' (pusty ciąg json) lub poprawny słownik, taki jak {'status': 200, 'message': 'the message string'}, ale powoduje to błąd.

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

Jaka powinna być prawidłowa odpowiedź dla funkcji potwierdzenia pocztowego? tutaj jest część kodu.

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.

Odpowiedzi

2 kerasbaz Aug 23 2020 at 23:54

Musisz zwrócić obiekt zdarzenia:

return event

Nie jest to oczywiste w przykładach, które podają w dokumentacji. Możesz sprawdzić i upewnić się, że obiekt zdarzenia zawiera klucz odpowiedzi (powinien).