首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Lambda函数会超时,即使API网关回调已经被调用了呢?

问为什么我的Lambda函数会超时,即使API网关回调已经被调用了呢?
EN

Stack Overflow用户
提问于 2017-09-05 18:55:54
回答 3查看 5.2K关注 0票数 3

我有一个AWS网关方法,代理通过AWS请求。但是,在日志中有以下内容,在三秒钟后就会出错:

转换前的端点响应体:{"errorMessage":"2017-09-05T16:30:49.987Z 922186c0-9257-11e7-9db3-51921d5597a2任务在3.00秒后超时“}

因此,我继续检查我的Node 6.10 AWS Lambda函数,以了解为什么它会超时。我在每个函数调用之前和之后都添加了日志语句。令人惊讶的是,它做了它应该做的一切:调用API回调,然后对数据库运行一个查询。这需要0.6s,据我所知,已经没有其他代码可以运行了。尽管如此,它似乎继续运行在其余的三秒钟,然后超时。(我想,这是因为我要打开到数据库的连接。)

我在callback调用之前和之后放置的日志语句表明,该调用在半秒内执行。然而,该响应似乎没有到达after,而在3秒后出现错误。

造成这种情况的潜在原因是什么,以及如何调试它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-05 19:51:06

默认情况下,在callback()函数中调用NodeJS函数不会结束函数的执行。它将继续运行,直到事件循环为空。当您坚持打开数据库连接时,NodeJS Lambda函数在调用callback之后继续运行,这是一个常见的问题。您还没有发布任何代码,所以我不能给出具体的建议,但是您需要确定是否在代码中打开数据库连接或类似的内容。

或者,您可以更改行为,以便在调用callback函数时通过在context对象上设置callbackWaitsForEmptyEventLoop = false来结束执行。

票数 13
EN

Stack Overflow用户

发布于 2018-01-04 06:39:28

您的API网关有29秒的固定超时时间。大多数查询都是在这个时间段内完成的。将您的lambda执行超时时间增加到30 Sec到3 Min 00 Sec之间的任意位置。使用context.succeed()代替回调。这对我有用。

代码语言:javascript
复制
const mysql = require('mysql');
const connection = mysql.createConnection({
  host     : 'your_mysql_host',
  user     : 'your_mysql_user',
  password : 'your_mysql_password',
  database : 'your_mysql_db'
});

exports.handler = (event, context) => {
  var userId = event.params.querystring.userid;
  const sql = 'SELECT * FROM users where USER_ID=' + userId;

  var response = {
    "statusCode": 200, 
    "body": "body_text_goes_here"
  }

  if(userId){
    connection.query(sql, function (error, results, fields) {
      if (error) {
        context.succeed(error);
      } else {
        response.body = results;
        context.succeed(response);
      }
    });
  }
}
票数 2
EN

Stack Overflow用户

发布于 2019-08-05 18:57:22

我也有同样的问题,我已经更新了我的代码中的超时,但是没有运气,最终增加了lambda的执行时间,从而解决了我的问题。

如何增加AWS Lambda超时?

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46061612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档