Я написал пару функций Firebase, которые используют node-postgresql для выполнения запросов к внешней базе данных PostgreSQL, размещенной на Amazon (RDS), используя это общее поведение:
import { Client } from "pg"
import { config } from "firebase-functions"
export async function sendQuery(query, args?) {
// use firebase environment config
const client = new Client(config().postgres)
await client.connect()
const res = await client.query(query, args)
await client.end()
return res
}
Этот кодЛокально работает , он может без проблем получить доступ к моему локальному серверу Postgres или серверу Amazon RDS.
При развертывании облачных функций, использующих эту функцию sendQuery
, и попытке запускавот что я получаю из журналов:
{Ошибка: подключите ETIMEDOUT xxx.xxx.xxx.xxx:5432 в TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1191:14) errno: 'ETIMEDOUT', код: 'ETIMEDOUT', системный вызов: 'connect', адрес: 'xxx.xxx.xxx.xxx', порт: 5432} "
Адрес сервера ипорт правильный, поэтому я предполагаю, что учетные данные были правильно отправлены через конфигурацию firebase. Исходящие запросы GET с использованием bluebird работают нормально, даже на случайных портах. Я начинаю задумываться, возможен ли вызов внешней базы данных ...у идеи?
Кроме того, на случай, если кому-то интересно, Я не на бесплатном плане искры , так что это не должно быть проблемой: