我的'handler.js'函数连接到Postgres数据库,并使用node.js执行一些查询。我的功能在本地成功运行,但是当作为AWS lambda访问时,查询不起作用。
我还在'serverless.yml'中添加了相应的vpc安全组和子网ID。
“Cloudwatch”中的错误日志只显示查询前后的console.log语句,并且函数因超时错误而终止。我无法弄清楚这个问题。
我在下面添加了示例'handler.js'代码:
var { Pool, Client } = require('pg');
export function apiTest(event, context, callback) {
var connectionString = 'postgresql://username:password@database.server.com:xxxx/dbname';
var client = new Client({
connectionString: connectionString,
})
client.connect();
console.log('Connected to PostgreSQL database');
client.query('SELECT * from table', (err, res) => {
console.log("inside query");
var jsonString = JSON.stringify(res.rows);
var jsonObj = JSON.parse(jsonString);
const headers = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
};
// Return status code 500 on error
if (err) {
const response = {
statusCode: 500,
headers: headers,
body: JSON.stringify({
status: false
})
};
callback(null, response);
client.end();
return;
}
const response = {
statusCode: 200,
headers: headers,
body: JSON.stringify(jsonObj)
};
callback(null, response);
console.log("query success")
client.end()
context.succeed(context);
})
}