Я пытаюсь использовать node-postgres (PG) для подключения к моей локальной базе данных PostgreSQL, работающей на порту 5432. Для этого я настроил ngrok для туннелированиямой запрос.
./ngrok tcp 5432
Приведенный ниже код работает при локальном запуске (даже при туннелировании с использованием ngrok).Это также работает на лямбда, когда я подключаюсь к внешней базе данных - в моем случае, размещенной на Heroku.
'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 для подключения к моей базе данных localhost через 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-14c7b1b: getaddrinfo ENOTFOUND tcp: //0.tcp.ngrok.io tcp: //0.tcp.ngrok.io: 12829 в errnoException (dns.js: 50: 10) в GetAddrInfoReqWrap.onlookup [как oncomplete] (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 ":" Error "," stackTrace ": [" errnoException (dns.js: 50: 10) "," GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js: 92: 26) "]} КОНЕЦ RequestId: 3ac634ef-310e-41ab-b20f-14c86271b5d7 ОТЧЕТ RequestId: 3ac634ef-310e-41ab-b20f-14c86271b5d7 Продолжительность: 136,26 мсек.мс Размер памяти: 128 МБ Макс. используемая память: 23 МБ
Блокирует лямбда-нгрок?