将 firebase 函数模拟器与云 SQL 代理一起使用
Using firebase functions emulator with cloud SQL proxy
我部署了一个调用 GCP MySQL 实例和 return 一些数据的 firebase https 函数。如何在 firebase 函数模拟器中 运行 这个函数?
我将该函数与一个简单的 helloWorld https 函数一起加载到模拟器中。 return 与本地 URL (http://localhost:5001/INSTANCE/us-central1/helloWorld) 相得益彰。本地 运行 SQL https 功能,但是 returns
{"errno":-4058,"code":"ENOENT","syscall":"connect","address":"/cloudsql/(deleted)","fatal":true}
...我在其中删除了实例连接名称。
接下来,我 运行 gcloud_sql_proxy 在我的电脑上,它声称正在监听 127.0.0.1:3306。 https 函数继续 return 与上面完全相同的错误,所以我不确定模拟函数是通过我的 gcloud_sql_proxy 还是仍在尝试直接连接到云 SQL -我猜是后者。
我是否还应该重新检测函数本身以使用主机+端口(127.0.0.1、3306)与它当前使用的 unix socketpath 方法进行连接?我希望模拟器会自动执行此操作,这样我就可以避免掉进那个兔子洞,因为云文档只提供了 socketpath 方法。但我确实打算接下来尝试一下。
谢谢。
根据错误消息,我认为模拟器正在寻找 Unix 套接字,听起来您正在使用 TCP 套接字启动云 SQL 代理。
尝试使用路径与您的函数匹配的 Unix 套接字。类似于:
cloud_sql_proxy -dir /cloudsql
这将为您的活动 gcloud 项目中的所有 SQL 个实例创建一个 Unix 套接字。
我部署了一个调用 GCP MySQL 实例和 return 一些数据的 firebase https 函数。如何在 firebase 函数模拟器中 运行 这个函数?
我将该函数与一个简单的 helloWorld https 函数一起加载到模拟器中。 return 与本地 URL (http://localhost:5001/INSTANCE/us-central1/helloWorld) 相得益彰。本地 运行 SQL https 功能,但是 returns
{"errno":-4058,"code":"ENOENT","syscall":"connect","address":"/cloudsql/(deleted)","fatal":true}
...我在其中删除了实例连接名称。
接下来,我 运行 gcloud_sql_proxy 在我的电脑上,它声称正在监听 127.0.0.1:3306。 https 函数继续 return 与上面完全相同的错误,所以我不确定模拟函数是通过我的 gcloud_sql_proxy 还是仍在尝试直接连接到云 SQL -我猜是后者。
我是否还应该重新检测函数本身以使用主机+端口(127.0.0.1、3306)与它当前使用的 unix socketpath 方法进行连接?我希望模拟器会自动执行此操作,这样我就可以避免掉进那个兔子洞,因为云文档只提供了 socketpath 方法。但我确实打算接下来尝试一下。
谢谢。
根据错误消息,我认为模拟器正在寻找 Unix 套接字,听起来您正在使用 TCP 套接字启动云 SQL 代理。
尝试使用路径与您的函数匹配的 Unix 套接字。类似于:
cloud_sql_proxy -dir /cloudsql
这将为您的活动 gcloud 项目中的所有 SQL 个实例创建一个 Unix 套接字。