Python Lambda donnant botocore.errorfactory.InvalidLambdaResponseException lorsqu'il est déclenché après la confirmation

Aug 24 2020

J'ai configuré la fonction AWS Lambda qui est déclenchée sur un AWS Cognito. Le déclencheur d'une confirmation par e-mail réussie. La fonction Lambda est en Python3.6.

Je fais référence à la documentation AWS pour le déclencheur de postConfirmation de Cognito. https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

Jusqu'à présent, j'ai essayé de renvoyer None, {}, '{}' (chaîne json vide) ou un dictionnaire valide comme {'status': 200, 'message': 'the message string'} mais cela donne une erreur.

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

Quelle devrait être une réponse valide pour la fonction de confirmation post? voici la partie du code.

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.

Réponses

2 kerasbaz Aug 23 2020 at 23:54

Vous devez renvoyer l'objet événement:

return event

Cela n'est pas évident dans les exemples qu'ils fournissent dans la documentation. Vous voudrez peut-être vérifier et vous assurer que l'objet événement contient une clé de réponse (il devrait).