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

Cloud Functions Gen2连接Google Cloud SQL的便捷配置方法咨询

Cloud Functions Gen2 连接Cloud SQL 无需手动配置的部署方案

非Terraform方案(gcloud命令行)

Cloud Functions Gen2基于Cloud Run构建,因此可以直接在gcloud functions deploy命令中使用与Cloud Run兼容的参数,无需手动在控制台配置Cloud SQL连接。

部署命令示例

gcloud functions deploy YOUR_FUNCTION_NAME \
  --gen2 \
  --runtime php82 \
  --region YOUR_REGION \
  --add-cloudsql-instances YOUR_PROJECT_ID:YOUR_REGION:YOUR_CLOUD_SQL_INSTANCE \
  --set-env-vars DB_SOCKET="/cloudsql/YOUR_PROJECT_ID:YOUR_REGION:YOUR_CLOUD_SQL_INSTANCE" \
  --service-account YOUR_SERVICE_ACCOUNT_EMAIL

关键参数说明

  • --add-cloudsql-instances:指定要关联的Cloud SQL实例,格式为项目ID:区域:实例名称,多个实例用逗号分隔。
  • --set-env-vars:设置PHP代码中需要的Unix Socket路径,后续连接数据库时直接使用该路径即可(例如PDO连接字符串mysql:unix_socket=/cloudsql/xxx;dbname=xxx)。
  • --service-account:确保指定的服务账号拥有roles/cloudsql.client角色,否则函数无法访问Cloud SQL实例。

Terraform方案

如果需要基础设施即代码管理,可以通过Terraform资源直接配置Cloud SQL连接,无需手动操作控制台。

Terraform配置示例

resource "google_cloudfunctions2_function" "sql_connected_function" {
  name        = "your-gen2-function"
  location    = "us-central1"
  description = "Gen2 function connected to Cloud SQL"

  build_config {
    runtime     = "php82"
    entry_point = "your_php_entry_function"
    source {
      storage_source {
        bucket = "your-source-code-bucket"
        object = "function-source.zip"
      }
    }
  }

  service_config {
    max_instances       = 5
    available_memory    = "256Mi"
    # 关联Cloud SQL实例
    cloud_sql_instances = ["your-project-id:us-central1:your-sql-instance"]
    # 设置Socket路径环境变量
    environment_variables = {
      DB_SOCKET = "/cloudsql/your-project-id:us-central1:your-sql-instance"
    }
    # 配置拥有Cloud SQL权限的服务账号
    service_account_email = "function-sa@your-project-id.iam.gserviceaccount.com"
  }
}

# 为服务账号绑定Cloud SQL Client角色
resource "google_project_iam_member" "sql_client_role" {
  project = "your-project-id"
  role    = "roles/cloudsql.client"
  member  = "serviceAccount:function-sa@your-project-id.iam.gserviceaccount.com"
}

说明

  • cloud_sql_instances字段直接指定要连接的Cloud SQL实例,格式与gcloud命令一致。
  • 必须确保服务账号拥有roles/cloudsql.client权限,否则函数无法建立连接。

内容的提问来源于stack exchange,提问作者Martin Šír

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:52:42