Google Cloud Batch+Workflow连接Cloud SQL报错:套接字文件不存在
针对你遇到的psycopg2.OperationalError(套接字文件不存在),结合GCP Workflow触发Batch作业连接Cloud SQL的场景,主要排查以下核心原因:
容器未集成Cloud SQL Auth Proxy
Cloud SQL的Unix套接字并非直接存在于Batch容器中,需要通过Cloud SQL Auth Proxy创建并维护这个套接字连接。如果你的容器镜像未预装Auth Proxy,也未在Batch作业配置中以sidecar容器方式启动Auth Proxy,就会出现套接字路径不存在的错误。Batch作业未配置Cloud SQL实例关联
即使服务账号拥有Cloud SQL Client权限,若Batch作业配置中未指定要连接的Cloud SQL实例(通过cloud_sql_instances字段),Batch服务不会自动挂载对应的套接字路径或启动Auth Proxy。需在Batch作业的任务配置里明确关联目标Cloud SQL实例(格式为PROJECT:REGION:INSTANCE)。套接字路径配置不匹配
检查代码中指定的套接字路径是否与实际挂载路径一致:默认情况下,通过Batch配置cloud_sql_instances后,套接字会挂载在/cloudsql/目录下,对应路径应为/cloudsql/PROJECT_NAME:us-central1:DB_NAME/.s.PGSQL.5432,若代码中路径拼写错误(如区域、实例名写错),会导致找不到文件。Cloud SQL实例状态异常
确认目标Cloud SQL实例处于运行中状态,且实例所在区域与Batch作业的区域一致(跨区域连接需额外配置,优先保证同区域)。如果实例已停止或处于维护状态,Auth Proxy无法创建套接字连接。服务账号权限绑定不生效
虽然配置了Cloud SQL Client角色,需确认该角色绑定在项目级别或Cloud SQL实例级别,且服务账号确实是Batch作业运行时使用的身份。角色绑定有时需要几分钟生效,可尝试等待后重新运行作业。
内容的提问来源于stack exchange,提问作者OlgaPp

