Aws lambda + Api Gateway问题

时间:2018-04-16 18:03:56

标签: node.js amazon-web-services aws-lambda

我有一个AWS lambda函数,它位于node.js

var pg = require("pg");
exports.handler = (event, context, callback) => {
 var client = new pg.Client({
    user: "41231qd123",
    password: "lkjlkasjdlkasldkjas",
    database: "12312312asdasd",
    port: 5432,
    host: "kdoiedjeifk.compute-1.amazonaws.com",
    ssl: true
 }); 
 client.connect();
 console.log('Connected to PostgreSQL database');
 client.query("SELECT products.* from products where location_id = 
  "+event.location_id+" AND company_id = "+event.company_id+" order  
   by products.name ASC;", (err, res) => {
    if (err) {
        callback(err);
    }
    var jsonString = JSON.stringify(res.rows);
    var jsonObj = JSON.parse(jsonString);
    console.log(jsonString);
    client.end();
    context.succeed(jsonObj);
  });
};  

当我在aws lambda“Test”中测试这个功能时,它运行得很好,但是在我添加了api-gateway并测试之后我得到了这条消息'在完成请求之前退出流程',有什么特别的原因使用代码或配置?

Image shows the response when i test it through api-gateway

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

首先,检查日志中是否存在lambda错误。

如果没有lambda崩溃

如果该功能花费的时间超过29秒,那么API网关集成可能会超时。检查lambda日志以查看是否存在崩溃,如果没有,请检查所花费的时间。

如果发生lambda崩溃

你的lambda登录cloudwatch会给出更好的理由。 “在完成请求之前退出的进程”通常是限制错误的样板AWS Lambda错误。你可能:

  1. lambda VM中的内存不足
  2. lambda VM中的磁盘空间不足
  3. 超时。
  4. 检查日志的REPORT行,它们应如下所示:

    REPORT RequestId: asdf-wertvgh-12345-fdghdfgh Duration: 12345.13 ms Billed Duration: 12400 ms Memory Size: 128 MB Max Memory Used: 64 MB

    如果这不是错误,您的日志应该会让您知道发生了什么。发布追溯可能会有所帮助。