[英]AWS Lambda NodeJS Connect to RDS Postgres Database
我正在嘗試測試我的Lambda和RDS實例之間的連接。 我將它們都放在同一個私有子網上,並在安全組中打開所有端口。 當我觸發Lambda時,我確實看到在RDS實例上打開了一個連接。 但是,Lambda在4分40秒后超時。 PG環境變量在Lambda配置中設置。
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);
};
如何從Lambda日志中的連接中獲取響應 - 甚至在響應正文中更好?
您需要更好地處理客戶端連接。 這意味着捕獲客戶端可能通過的任何異常並正確釋放連接。 此代碼將返回查詢的輸出到響應正文:
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);
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.