Python Lambda дает исключение botocore.errorfactory.InvalidLambdaResponseException при срабатывании при постподтверждении

Aug 24 2020

У меня настроена функция AWS Lambda, которая запускается на AWS Cognito. Триггер при успешном подтверждении по электронной почте. Лямбда-функция находится в Python3.6.

Я имею в виду документацию AWS для триггера Cognito postConfirmation. https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

До сих пор я пытался вернуть None, {}, '{}' (пустая строка json) или допустимый словарь, например {'status': 200, 'message': 'the message string'}, но это дает ошибку.

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

Каким должен быть действительный ответ для функции пост-подтверждения? вот часть кода.

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.

Ответы

2 kerasbaz Aug 23 2020 at 23:54

Вам нужно вернуть объект события:

return event

Это неочевидно в примерах, которые они предоставляют в документации. Вы можете проверить и убедиться, что объект события содержит ключ ответа (он должен).