aws lam nodejs mysql,AWS Lambda NodeJS连接到RDS Postgres数据库

I'm trying to test connectivity between my Lambda and an RDS instance. I have them both on the same private subnets with all ports open in the security group. When I trigger the Lambda I do see a connection opened on the RDS instance. However, the Lambda times out after 4 minutes, 40 seconds. The PG environment variables are set in the Lambda configuration.

const { Client } = require('pg');

const client = new Client();

var hello = [

{ name: 'test', description: 'testerface' }

];

exports.handler = async (event, context, callback) => {

// Postgres Connect

client.connect();

const res = client.query('SELECT $1::text as message', ['Hello world!']);

console.log(res);

var response = {

"statusCode": 200,

"headers": {

"Content-Type" : "application/json"

},

"body": JSON.stringify(hello),

"isBase64Encoded": false

};

callback(null, response);

};

How can I get back the response from the connection in the Lambda's logs - or even better in the response body?

解决方案

You need to handle the client connection better. That means catching any exceptions that the client may through and releasing the connection properly. This code will return the output of the query to the response body:

const pg = require('pg')

const pool = new pg.Pool()

async function query (q) {

const client = await pool.connect()

let res

try {

await client.query('BEGIN')

try {

res = await client.query(q)

await client.query('COMMIT')

} catch (err) {

await client.query('ROLLBACK')

throw err

}

} finally {

client.release()

}

return res

}

exports.handler = async (event, context, callback) => {

try {

const { rows } = await query("select * from pg_tables")

console.log(JSON.stringify(rows[0]))

var response = {

"statusCode": 200,

"headers": {

"Content-Type" : "application/json"

},

"body": JSON.stringify(rows),

"isBase64Encoded": false

};

callback(null, response);

} catch (err) {

console.log('Database ' + err)

callback(null, 'Database ' + err);

}

};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值