【发布时间】:2019-06-06 02:05:00
【问题描述】:
我无法从我的 lambda 函数连接到 EC2 Postgres DB
我在 S3 createAll 事件之后创建了一个 lambda 函数,在这个 lambda 函数中,我需要更新我的数据库中的数据。我所做的是我在本地测试了数据库连接。它工作正常。但是,在我发布到 lambda 之后,client.connect 函数中的每个 console.log 都不会被触发。我认为这将是我的 lambda 角色的许可,所以我给了这个角色管理员权限。此外,在 EC2 规则中,我将传入流量向所有人开放。也传出给所有人。 1. EC2是ubuntu,Postgres作为DB 2. Lambda函数的Nodejs
const { Client } = require('pg');
exports.handler = async (event,context,callback) => {
context.callbackWaitsForEmptyEventLoop = true;
var client = new Client({
host:'example.com',
port:5432,
user:'postgres',
password:'examplepassword',
database:'db'
});
console.log('start connecting db : log client');
client.connect().then(() => {
console.log('DB is connected');
const text1 = 'SELECT * FROM unime.lecture_content';
const text = 'INSERT INTO uni.institute_type(name) VALUES($1)
RETURNING *';
const values = ['Test Data 2'];
callback('DB Connected')
}).catch(e => {console.error('connection error', e.stack)
callback('DB failure',e.stack)
})
};
我的包.json
{
"name": "node_postgres",
"version": "1.0.0",
"description": "node postgres api",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"deploy": " — zip-file fileb://Lambda-Deployment.zip",
"predeploy": "zip -r Lambda-Deployment.zip * -x *.zip *.log"
},
"keywords": [
"postgres"
],
"author": "JUNXILI",
"license": "ISC",
"dependencies": {
"pg": "^7.0.3"
}
}
我想在 client.connect 函数中显示所有日志。请帮帮我谢谢
【问题讨论】:
-
现在我可以只在连接函数之外应用回调函数来获取日志。但是,如果我将回调放入连接函数中,则不会发生回调。
标签: node.js postgresql lambda