確認後にトリガーされたときにbotocore.errorfactory.InvalidLambdaResponseExceptionを与えるPythonLambda

Aug 24 2020

AWSCognitoでトリガーされるAWSLambda関数をセットアップしました。電子メールの確認が成功したときのトリガー。Lambda関数はPython3.6にあります。

CognitopostConfirmationトリガーについてはAWSのドキュメントを参照しています。 https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html

"response": {}

これまで、None、{}、 '{}'(空のjson文字列)または{'status':200、 'message': 'メッセージ文字列'}のような有効な辞書を返そうとしましたが、エラーが発生します。

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

これは、ドキュメントで提供されている例では明らかではありません。イベントオブジェクトに応答キーが含まれていることを確認してください(必要です)。