Cognito邮箱OTP自定义认证流:CreateAuthChallenge报InvalidLambdaResponseException
问题原因与解决方案
核心问题
InvalidLambdaResponseException错误的直接原因是CreateAuthChallenge Lambda返回的challengeMetadata字段格式不符合Cognito要求:
- Cognito规定该字段必须是字符串类型
- 你的日志显示该字段是一个JSON对象
{"CODE": "CODE-6217"},这会导致Cognito无法解析响应
修正方法
修改CreateAuthLambda的响应部分,将challengeMetadata改为字符串格式,示例如下:
"response": { "publicChallengeParameters": { "message": "请输入发送到你邮箱的OTP验证码" }, "privateChallengeParameters": { "OTP": "6217" }, "challengeMetadata": "CODE-6217" }
额外检查项
- 确保
publicChallengeParameters包含前端需要展示的公开提示信息(比如上述示例中的提示文本),这不是强制要求,但能提升用户体验 - 确认Lambda函数的返回值是严格的JSON格式,没有语法错误
- 检查Lambda的执行权限是否包含发送邮件(如果是你自己实现OTP发送逻辑)的相关权限
内容的提问来源于stack exchange,提问作者HyperioN
相关产品推荐
相关产品推荐

