AWS Cognito预注册触发器因InvalidLambdaResponseException而失败

时间:2019-06-14 00:11:40

标签: amazon-cognito

我的注册前触发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。

对于他在那里的所有专家,请帮助!

1 个答案:

答案 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引起的。