问题描述
我有一个lambda函数,该函数由 AWS API Gateway Websockets API 触发。只需使用 pg-promise 用 Postgres 查询我的 AWS RDS ,然后控制台记录结果。运行此命令,它将永远不会运行查询或返回调用'RESULT'console.log。
我已将查询替换为插入数据库表中的查询,并且运行该数据库时未更改该数据库。
考虑到AWS Lambda的重用Node环境的行为,我是否听说过是否需要手动担心数据库连接的问题回答不一。
有人知道这里可能出什么问题吗?我认为这可能是由于数据库连接或我对async await
的使用。
const chalk = require('chalk');
const {getAllTopics} = require('./SubscriptionsAPI');
const db = require('./dbConfig').db;
async function main(event) {
// Unpack required data from event
const {routeKey} = event.requestContext;
// Process Event
try {
if (routeKey === '$connect') {
console.log("Getting Topics");
const result = await db.query('SELECT * from "Topic"');
console.log(chalk.bgBlue('RESULT'),result);
return result;
}
} catch(error) {
console.log(chalk.bgRed('SERVER ERROR'),chalk.red(error.message),error);
}
}
exports.handler = main;
try {
require('dotenv').config();
} catch {
}
const pgp = require('pg-promise')();
const config = {
host: process.env.RDS_HOSTNAME,port: process.env.RDS_PORT,user: process.env.RDS_USERNAME,password: process.env.RDS_PASSWORD,database: process.env.RDS_DB_NAME,max: process.env.RDS_MAX
};
let db = pgp(config);
module.exports = {
db,};
这是日志。如您所见,它在查询之前调用console.log,但在等待之后调用console.log。
2020-11-01T08:51:48.570-05:00 START RequestId: 24abf63c-dffc-4b52-8329-6e47e313ce6e Version: $LATEST
2020-11-01T08:51:48.572-05:00 2020-11-01T13:51:48.572Z 24abf63c-dffc-4b52-8329-6e47e313ce6e INFO Getting Topics
2020-11-01T08:52:18.603-05:00 END RequestId: 24abf63c-dffc-4b52-8329-6e47e313ce6e
2020-11-01T08:52:18.603-05:00 REPORT RequestId: 24abf63c-dffc-4b52-8329-6e47e313ce6e Duration: 30030.61 ms Billed Duration: 30000 ms Memory Size: 128 MB Max Memory Used: 78 MB
2020-11-01T08:52:18.603-05:00 2020-11-01T13:52:18.603Z 24abf63c-dffc-4b52-8329-6e47e313ce6e Task timed out after 30.03 seconds
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)