aws开发的新手,正在尝试使用aws cognito的自定义身份验证流程,lambda触发器和aws python SDK来实现无密码功能。
我的问题是调用 InitiateAuth 后,我总是收到以下错误:
An error occurred (InvalidLambdaResponseException) when calling the InitiateAuth operation: Unrecognizable lambda output
完整回溯是:
Traceback (most recent call last):
File "test_custom_auth.py", line 52, in <module>
ClientId=client_id
File "/Users/jules/Repositories/snaaap/onemac-api/env/lib/python3.6/site-packages/botocore/client.py", line 320, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/Users/jules/Repositories/snaaap/onemac-api/env/lib/python3.6/site-packages/botocore/client.py", line 623, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.InvalidLambdaResponseException: An error occurred (InvalidLambdaResponseException) when calling the InitiateAuth operation: Unrecognizable lambda output
我可以通过cloudwatch日志看到 defineAuthChallenge触发器和 createAuthChallenge触发器调用成功,甚至可以打印出日志来验证这一点。
我首先使用 JavaScript ,然后使用 Python 进行了lambda函数,只是尝试了另一种方法。
我试图在python中返回以下内容(我正在使用lambda编辑器控制台进行编辑)
return event
result = {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {},
"body": json.dumps(event)
}
return result
我试图用javascript返回以下内容(我正在使用lambda编辑器控制台进行编辑)
context.succeed(event)
callback(null, event)
context.done(event)
context.done(JSON.stringify(event))
上面提到的那些排列方式,但我仍然不断出错:(感谢任何可以提供帮助的人!
编辑
执行了另一个请求:
以下是来自 defineAuthChallenge 的日志:
START RequestId: 14441740-cc65-11e8-a632-9508cbba464c Version: $LATEST
END RequestId: 14441740-cc65-11e8-a632-9508cbba464c
REPORT RequestId: 14441740-cc65-11e8-a632-9508cbba464c Duration: 6.70 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 20 MB
以下是来自** createAuthChallenge **的日志:
START RequestId: 144995b6-cc65-11e8-8d2d-5388c84ccf95 Version: $LATEST
END RequestId: 144995b6-cc65-11e8-8d2d-5388c84ccf95
REPORT RequestId: 144995b6-cc65-11e8-8d2d-5388c84ccf95 Duration: 592.59 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 29 MB
答案 0 :(得分:0)
在我从 createAuthChallenge 函数返回的响应中,将challengeMetaData
更改为challengeMetadata
。了解到,当您在响应属性中放置无效密钥时,lambda会抛出InvalidLambdaResponseException
,尽管我希望下次cloudwatch可以捕获它。
从@thomasmichaelwallace和本文https://forums.aws.amazon.com/thread.jspa?threadID=237677中得到了一个想法。