【发布时间】:2019-07-17 16:40:24
【问题描述】:
我按照指南 here 设置了预注册触发器。
但是,当我使用 callback(null, event) 时,我的 lambda 函数永远不会真正返回,我最终会得到一个错误
{ 代码:'UnexpectedLambdaException', 名称:'UnexpectedLambdaException', 消息:'arn:aws:lambda:us-east-2:642684845958:function:proj-dev-confirm-1OP5DB3KK5WTA 在调用 Lambda 函数时因错误套接字超时而失败。' }
我发现了一个类似的link here,它说要使用context.done()。
切换后效果很好。
有什么区别?
exports.confirm = (event, context, callback) => {
event.response.autoConfirmUser = true;
context.done(null, event);
//callback(null, event); does not work
}
【问题讨论】:
-
context.done()在 6.10 之前的 Node.js 运行时中使用并且已弃用。将其改回callback(),我希望它会再次起作用,因为您遇到的错误似乎是您不应该导致的错误,即使是偶然的。它可能已被“修复”,因为您更改了代码中的 任何内容,促使 Lambda 重新部署它。 -
所以这实际上并没有解决它。但是,我确实添加了
context.callbackWaitsForEmptyEventLoop = false;,它现在可以工作了。你有没有机会解释这实际上是做什么的? @Michael-sqlbot -
我也有这个问题。 context.callbackWaitsForEmptyEventLoop = false;解决了
标签: node.js amazon-web-services aws-lambda amazon-cognito amazon-cognito-triggers