首页 > 解决方案 > 使用 Google Firebase 功能连接到 Postgres (AWS RDS) 仍然失败

问题描述

我正在尝试通过我的 Google Firebase Functions 后端连接到我的 AWS rds postgres 数据库。经过反复试验,我成功地在本地连接到它(运行firebase emulators:start --only functions并成功查询了数据库)。但是,{ Error: connect ECONNREFUSED 127.0.0.1:3306当我将函数部署到远程 Google Firebase Functions 服务器时,我遇到了问题。

我已将我的 AWS RDS 数据库设置为可公开访问。我知道我需要允许来自我的 Google Firebase 服务器的入站流量,但从我设法挖掘出来的情况来看,表明我正在使用的可用区 (us-central-1) 有数十个与之关联的 IP 地址。我放弃并允许所有传入流量(是的,我知道这很糟糕,但我还没有投入生产)。但是,我仍然遇到同样的错误!

我也读过这个无济于事。

关于如何使其正常工作以及如何正确连接它以防止所有传入流量的任何想法?

下面是我如何在我的 firebase 函数中连接到我的 aws db。函数本身(存储代码的地方)是 us-central:

  const {Pool} = require('pg');

  private static readonly config = {
    user: 'xxxxxxxx',
    host: 'xxxxxxx.yyyyyyyyy.us-east-2.rds.amazonaws.com',
    database: 'postgres',
    password: 'xxxxxxxxxx',
    port: 5432
  };
  private static readonly pool = new Pool(RemoteDBHandler.config);

编辑:有人将我的问题标记为重复,所以我在这里复制了一份。现在看,奇怪的是在 localhost (127.0.0.1) 上尝试连接。我不知道为什么会这样,因为我正在连接到 aws 服务器。因此,我认为不适用于我

标签: node.jspostgresqlfirebasegoogle-cloud-functionsamazon-rds

解决方案


看起来问题实际上与我如何调用函数 API 本身有关。我不小心向 XXXXX/widgets/widgets/route 发送了 https 请求,而不是 XXXXX/widgets/route。基本上,我在那里有两次我的函数名。

另一个可能与后来的读者更相关的问题是,因为我正在移植一个功能齐全的 express 应用程序,所以我仍然有一个在 index.ts 中调用的方法,它启动了 express 服务器。在 Google Functions 上,这不是必需的,并且可能是我头痛的另一个原因


推荐阅读