微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在AWS Lambda中使用pg-promise查询AWS RDS

如何解决无法在AWS Lambda中使用pg-promise查询AWS RDS

我有一个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;

这是我要从中导入db接口的dbConfig.js文件

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。

CloudWatch Logs as Image

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 举报,一经查实,本站将立刻删除。