GCP Cloud Run连接跨项目Cloud SQL实例报不可达、ENOENT错误
跨项目连接Cloud SQL实例报错排障指南
问题现象
跨项目归属连接Cloud SQL实例时,应用抛出两类报错:
- 实例不可达错误:
Cloud SQL instance "${process.env.INSTANCE_CONNECTION_NAME}" is not reachable - Unix套接字文件不存在错误:
ENOENT /cloudsql/${process.env.INSTANCE_CONNECTION_NAME}/.s.PGSQL.5432
已完成的前置校验项:
- Cloud Run服务已配置指向目标跨项目Cloud SQL实例的服务连接
- 部署使用的服务账号,在当前服务所属项目、Cloud SQL实例所属项目均已授予
Cloud SQL Client权限 - Cloud Run环境变量配置正确,
INSTANCE_CONNECTION_NAME取值与目标实例连接名完全匹配 - 调整存量部署配置、从零重新部署服务均复现相同错误,应用基于Node.js开发,使用Sequelize作为ORM框架
排障方案(按优先级从高到低排查)
1. 修正Sequelize连接配置适配Cloud Run套接字模式
Cloud Run内置的Cloud SQL代理默认通过Unix域套接字挂载实例,不会暴露TCP端口,Sequelize配置错误是该类报错的最高频诱因:
- 移除配置中写死的
host: 'localhost'、port: 5432等TCP连接参数,这类配置会导致驱动直接查找本地TCP端口,绕过代理挂载的套接字路径 - 若使用v6以下版本的Sequelize,先升级ORM版本——低版本Sequelize对PostgreSQL的Unix套接字连接存在路径拼接bug
- 正确连接配置参考:
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, { host: `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`, dialect: 'postgres', dialectOptions: { socketPath: `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}` } })
2. 校验目标Cloud SQL实例侧配置
- 确认目标实例已开启公共IP:Cloud Run默认内置的Cloud SQL代理依赖公共IP建立连接,仅开启私有IP的跨项目实例需要额外配置VPC对等连接与Serverless VPC访问器,否则无法自动连通
- 检查跨项目连接限制策略:进入目标实例所属项目的组织策略控制台,确认
constraints/sql.restrictCrossProjectInstanceUsage策略为允许状态,该策略开启时会静默拦截所有跨项目实例连接,不会返回显式权限报错 - 确认实例运行状态正常:检查实例是否处于停机、维护、故障恢复状态,这类状态下代理无法正常建立套接字监听
3. 校验Cloud Run服务连接配置有效性
- 跨项目添加Cloud SQL连接时,不要仅选择当前项目下的实例列表项,需要手动输入跨项目实例的完整连接名(格式为
项目ID:区域:实例ID),选错项目、区域、实例ID时,即使环境变量配置正确,Cloud Run也不会挂载对应实例的套接字目录 - 确认最新部署的修订版本生效:进入Cloud Run修订版本列表,检查当前流量指向的最新修订版本,确认其连接配置中确实存在目标Cloud SQL实例,部署失败、流量未切到新修订都会导致旧配置持续生效
- 校验服务账号权限传递:确认目标实例所属项目未开启组织级别的跨项目服务账号拦截规则,若配置了“仅允许本项目服务账号访问资源”的组织策略,即使手动授予了
Cloud SQL Client角色,跨项目服务账号的请求也会被拦截
4. 运行时挂载校验
部署一个临时调试修订版本,在服务启动脚本中加入ls -la /cloudsql/命令,根据输出判断问题点:
- 如果
/cloudsql目录下不存在和INSTANCE_CONNECTION_NAME同名的子目录,说明Cloud Run侧的Cloud SQL连接配置未生效,回到第3点重新校验配置 - 如果同名子目录存在,但目录下没有
.s.PGSQL.5432套接字文件,说明Cloud SQL代理启动失败,查看Cloud Run系统日志(非应用日志)中cloudsql_agent字段的报错,通常为跨项目权限不足、实例连接名错误、实例侧拦截导致
内容的提问来源于stack exchange,提问作者nm_machine89
相关产品推荐
相关产品推荐

