You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google Cloud Functions连接到Cloud SQL (PostgreSQL)?

问题根因

127.0.0.1是本地环回地址,仅当Cloud Function运行环境本地启动了Cloud SQL Auth代理进程时才能连接,默认环境无该进程,因此触发连接拒绝报错。

可行解决方案

方案1:使用官方推荐的Unix套接字连接(无需公网、无需额外VPC配置,优先级最高)

  • 第一步:进入Cloud Function的配置页,切换到「运行时、构建、连接」标签,在「Cloud SQL 连接」部分添加你要访问的PostgreSQL实例,保存后重新部署函数
  • 第二步:修改连接凭证配置,删除host、port字段,新增socketPath配置,示例如下:
import { Pool } from 'pg';

const credentials: sqlCredentials = {
   "socketPath": `/cloudsql/你的Cloud SQL实例连接名`, // 实例连接名格式为 GCP项目ID:区域:实例名,可在Cloud SQL实例详情页直接复制
   "database":"myFirstDatabase",
   "user":"postgres",
   "password":"postgres1!"
}

const pool: Pool = new Pool(credentials);
await pool.query(`select CURRENT_DATE;`).catch(error => console.error(`error in pool.query: ${error}`));
  • 第三步:确认Cloud Function运行时使用的服务账号,已被授予roles/cloudsql.client(Cloud SQL客户端)权限

方案2:使用私有IP连接

  • 第一步:为Cloud Function配置VPC连接器,连接器需要和Cloud SQL实例的私有IP归属同一个VPC
  • 第二步:调整VPC防火墙规则,放通VPC连接器的IP段访问Cloud SQL私有IP的5432端口
  • 第三步:确认Cloud SQL实例已开启私有IP,连接凭证中host填Cloud SQL的私有IP,port填5432即可
  • 第四步:同样需要保证服务账号拥有Cloud SQL客户端权限

额外排查点

  • 如果你是手动拉取Secrets Manager的密钥,确认Cloud Function服务账号已被授予roles/secretmanager.secretAccessor(Secret访问者)权限,避免凭证读取异常
  • 不要直接填Cloud SQL实例名作为host,该配置不会被自动解析为有效访问地址

内容的提问来源于stack exchange,提问作者NICO BHHC Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:36:04