尽管抛出了超时错误并且没有解决回调,但是AWS Lambda函数仍然可以正常工作

时间:2018-09-11 19:26:29

标签: mysql node.js aws-lambda sequelize.js

我有一个Lambda函数,该函数接收来自SNS的消息,并使用一个自定义模块来查询外部数据库并将计算结果输出到该数据库。该模块运行良好:Lambda通过VPC可以访问Internet,并成功连接到数据库并将所需的数据输出到数据库,但是仍然出现错误“任务在3.00秒后超时”。该模块本身使用sequelize,async / await和promises。

我增加了最大超时时间,唯一的区别是错误消息中的秒数增加到超时限制。我尝试保留并发性,错误仍然存​​在。我的函数的每个部分都可以正常工作,而不是回调永远无法解决,从而产生超时错误。我尝试使用和不使用“ context.callbackWaitsForEmptyEventLoop”语句来运行该函数,使用该语句运行该函数只会使代码返回,而不需要任何评级引擎功能完成。这是评分引擎代码:https://github.com/elizajanus/rating-engine-module

是否有可能数据库连接没有在我的自定义模块中关闭并且阻止代码完全完成导入的功能?还是其他呢?可能与以下问题有关:https://github.com/sequelize/sequelize/issues/8468

const {RatingEngine} = require('./rating-engine');


exports.handler = (event, context, callback) => {
    const message = event.Records[0].Sns.Message;
    RatingEngine(message, message.d_customer_id, 
      message.d_total_distance_travelled); 
    callback(null, 'move record created in database');
};

1 个答案:

答案 0 :(得分:0)

@Eliza Janus,您可以使用https://www.npmjs.com/package/lambda-local在本地测试代码,这将帮助您更好地确定调试代码的问题。