我正在尝试使用node-postgres (PG)连接到在端口5432上运行的localhost PostgreSQL数据库。为此,我设置了ngrok来传送请求。
./ngrok tcp 5432
以下代码在本地运行时有效(即使使用ngrok进行隧道传输时)。当我连接到外部数据库(在我的情况下由Heroku托管)时,它也适用于lambda。
'use strict';
const PG = require('pg');
// These credentials work locally
var credentials = {
user: 'MyUsername',
host: 'tcp://0.tcp.ngrok.io',
database: 'MyDatabase',
password: 'MyPassword',
port: '12829',
ssl: true
};
const pool = new PG.Pool(credentials);
const connectionPromise = function(){
return new Promise(function (resolve, reject) {
pool.connect(function (err, client, done) {
if(err) console.log(err);
err ? reject(err) : resolve({
client: client,
done: done
})
})
});
};
exports.handler = Handler;
function Handler(event, context, callback) {
context.callbackWaitsForEmptyEventLoop = false;
console.log("Calling handler in Lambda");
return connectionPromise().then(function (conn) {
console.log("Success");
callback(null);
}).catch(function (err) {
console.log("Error");
callback(err);
});
};
// Uncomment this code to run locally.
// Handler(null, {}, function(){
// console.log("Exiting");
// process.exit();
// });
但是,当我尝试使用node-postgres + Ngrok通过Lambda连接到我的本地主机数据库时...
错误:getaddrinfo ENOTFOUND tcp://0.tcp.ngrok.io tcp://0.tcp.ngrok.io:12829
完整错误消息
START RequestId:3ac634ef-310e-41ab-b20f-14c86271b5d7版本:$ LATEST 2019-01-21T16:14:27.020Z 3ac634ef-310e-41ab-b20f-14c86271b5d7打电话 Lambda中的处理程序 2019-01-21T16:14:27.117Z 3ac634ef-310e-41ab-b20f-14c86271b5d7 {错误: getaddrinfo ENOTFOUND tcp://0.tcp.ngrok.io tcp://0.tcp.ngrok.io:12829 在errnoException(dns.js:50:10) 在GetAddrInfoReqWrap.onlookup [未完成](dns.js:92:26)处,代码:“ ENOTFOUND”,错误号:“ ENOTFOUND”,系统调用:“ getaddrinfo”,
主机名:“ tcp://0.tcp.ngrok.io”,主机:“ tcp://0.tcp.ngrok.io”,
端口:12829} 2019-01-21T16:14:27.118Z 3ac634ef-310e-41ab-b20f-14c86271b5d7错误 2019-01-21T16:14:27.155Z 3ac634ef-310e-41ab-b20f-14c86271b5d7 {“ errorMessage”:“ getaddrinfo ENOTFOUND tcp://0.tcp.ngrok.io tcp://0.tcp.ngrok.io:12829“,” errorType“:”错误“,” stackTrace“:[” errnoException (dns.js:50:10)“,” GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)“]} END RequestId:3ac634ef-310e-41ab-b20f-14c86271b5d7 报告RequestId:3ac634ef-310e-41ab-b20f-14c86271b5d7持续时间: 136.26 ms计费时间:200 ms内存大小:128 MB使用的最大内存:23 MB
lambda是否阻止ngrok?
答案 0 :(得分:0)
从ngrok主机名中删除 tcp://
:
var credentials = {
user: 'MyUsername',
host: '0.tcp.ngrok.io',
database: 'MyDatabase',
password: 'MyPassword',
port: '12829',
ssl: true
};