我的注册前触发lambda失败,并出现InvalidLambdaResponseException。使用nodejs。用户注册无需触发即可工作。
我几乎尝试了所有有关如何处理此触发器的建议解决方案。我试图用context.done(null,event)和callback(null,event)结束lambda。测试脚本有效。 值得一提的是,我大约有10个用户属性,其中包括7个自定义属性。
exports.handler = (event, context, callback) => {
// Check if business phone exists
event.response.autoConfirmEmail = false;
// This example uses a custom attribute "custom:domain"
if (event.request.userAttributes.hasOwnProperty("custom:business_phone")) {
if ( event.request.userAttributes["custom:business_phone"] !== null
&& event.request.userAttributes["custom:business_phone"] !== "") {
event.response.autoConfirmEmail = true;
}
}
// Return to Amazon Cognito
callback(null, event);
//context.done(null, event);
};
测试事件有效,但浏览器中的用户注册返回InvalidLambdaResponseException。尝试了最后两行之一或全部。
更新:为发布确认触发器获取相同的异常。原样使用aws doc示例。使用运行时NodeJs10.x。也尝试过8.10。
对于他在那里的所有专家,请帮助!
答案 0 :(得分:0)
我遇到了同样的问题,结果该错误是由我的cloudformation中的另一个 lambda引起的:
exports.handler = (event, context, callback) => {
if (event.triggerSource === "CustomMessage_ForgotPassword") {
event.response.emailSubject = "Reset your password for blah";
event.response.emailMessage = "Blah blah";
callback(null, event);
}
};
在注册发送电子邮件时,它也在执行上述lambda。但是callback(null, event);
在if
语句中,因此没有执行,因为event.triggerSource
不是"CustomMessage_ForgotPassword"
。
通过在callback(null, event);
语句之外放置if
可以解决整个问题。
我建议您检查其他lambda到底是否总是执行callback(null, event)
,因为错误可能是由与您预期不同的lambda引起的。