用于 postgreSQL 的 AWS Lambda 函数 NodeJs - 超时错误

Gir*_*iri 7 postgresql amazon-rds node.js aws-lambda

我是 AWS 新手。我正在尝试使用 Lambda 函数连接到 AWS RDS postgreSQL 实例。我遵循了aws 文档。但它使用 python 来执行 Lambda 函数。下面是我的代码。

'use strict';
var pg = require('pg');
exports.handler = function (event, context) {
    var dbConfig = {
        username: '<username>',
        password: '<password>',
        database: '<database>',
        host: '<db-endpoint>',
    };
    var client = new pg.Client(dbConfig);
    try {
        client.connect();
        context.callbackWaitsForEmptyEventLoop = false;
        client.end();
    }
    catch (err) {
        console.log(err);
        client.end();
    }
};
Run Code Online (Sandbox Code Playgroud)

我收到如下超时错误

START RequestId: 368e619e-ed9d-4241-93a5-764ee01aa847 Version: $LATEST
2020-06-15T16:28:18.911Z    368e619e-ed9d-4241-93a5-764ee01aa847    INFO    connected
END RequestId: 368e619e-ed9d-4241-93a5-764ee01aa847
REPORT RequestId: 368e619e-ed9d-4241-93a5-764ee01aa847  Duration: 20020.16 ms   Billed Duration: 20000 ms   Memory Size: 128 MB Max Memory Used: 70 MB  Init Duration: 150.01 ms    
2020-06-15T16:28:38.901Z 368e619e-ed9d-4241-93a5-764ee01aa847 Task timed out after 20.02 seconds
Run Code Online (Sandbox Code Playgroud)

错误之处请指教。

我还有一些其他问题来确保我的代码是否正确

  • 我为 db-endpoint 提供了数据库实例端点 url。是对的吗?或者如果不是我应该在那里使用什么?

  • 对于像我这样的初学者来说,有没有关于 Lambda 函数和 Nodejs 连接 RDS 上的 postgres 的合适文档?

Hem*_*har 5

您不会从 lambda 返回任何内容。因此请求会一直挂起而没有响应,直到超时。

使用提供给处理程序的第三个参数callback来响应或返回Promise.

'use strict';
var pg = require('pg');
exports.handler = function (event, context,callback) {
    var dbConfig = {
        username: '<username>',
        password: '<password>',
        database: '<database>',
        host: '<db-endpoint>',
    };
    var client = new pg.Client(dbConfig);
    try {
        client.connect();
        context.callbackWaitsForEmptyEventLoop = false;
        client.end();

        //send the response
        callback(null,"Some Response")
    }
    catch (err) {
        console.log(err);
        client.end();
        callback(err)
    }
};
Run Code Online (Sandbox Code Playgroud)

AWS 示例:AWS Lambda NodeJS 连接到 RDS Postgres 数据库

您可以在此处阅读包含所有方法和属性的官方 js 文档:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS.html

希望这可以帮助 !