我正试图通过我的Google Firebase函数后端连接到我的AWS rds postgres数据库。经过一些尝试和错误,我成功地在本地连接到它(运行firebase emulators:start --only functions
并成功查询数据库(。然而,当我将函数部署到远程Google Firebase Functions服务器时,我遇到了{ Error: connect ECONNREFUSED 127.0.0.1:3306
。
我已将我的AWS RDS数据库设置为可公开访问。我知道我需要允许来自Google Firebase服务器的入站流量,但从我设法挖掘到的情况来看,这表明我正在使用的可用区(us-central-1(有几十个IP地址与之相关。我放弃并允许所有入站流量(是的,我知道这很糟糕,但我还没有投入生产(。然而,我仍然得到同样的错误!
我也读过这个和这个都没有用。
关于如何让它工作,以及如何正确连接它,这样我就不会允许所有传入流量,有什么想法吗?
以下是我如何在firebase函数中连接到我的aws数据库。函数本身(存储代码的地方(是我们的中心:
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服务器。因此,我认为这不适用于我
看起来问题实际上是我如何调用函数API本身。我不小心向XXXXX/widgets/widgets/route发送了一个https请求,而不是XXXXX/widgets/sroute。基本上,我有两次函数名在里面。
另一个可能与后来的读者更相关的问题是,因为我正在移植一个功能齐全的express应用程序,所以我仍然有一个方法,我在启动express服务器的index.ts中调用了这个方法。在谷歌功能上,这是不必要的,可能是我头疼的另一个原因