如何在Terraform中为第二代Cloud Function配置Cloud SQL连接?
第二代Cloud Function的Cloud SQL连接Terraform配置方案
完全可以通过Terraform直接完成第二代Cloud Function的Cloud SQL连接配置,无需手动操作底层Cloud Run服务。
实现方法
在google_cloudfunctions2_function资源的service_config块中添加cloudsql_instances参数,直接指定目标Cloud SQL实例的连接名(格式为projects/[项目ID]/locations/[实例区域]/instances/[实例名称]),部署时Terraform会自动完成底层Cloud Run服务的关联配置。
修改后的完整Terraform代码
resource "google_cloudfunctions2_function" "function" { name = "${var.pipeline_name}-${var.environment}" location = var.region description = "Connect to Cloud SQL" project = var.project_name build_config { runtime = "python38" entry_point = "establish_connection" # Set the entry point source { storage_source { bucket = google_storage_bucket.export_bucket.name object = google_storage_bucket_object.cloud_function_src.name } } } service_config { max_instance_count = 1 available_memory = "1Gi" timeout_seconds = 3600 service_account_email = var.service_account vpc_connector_egress_settings = "ALL_TRAFFIC" vpc_connector = "projects/${nw_project}/locations/us-east1/connectors/use1-01-${var.environment}" # 添加Cloud SQL连接配置 cloudsql_instances = [ "projects/${var.project_name}/locations/${var.sql_region}/instances/${var.sql_instance_name}" ] } }
关键注意事项
- 确保配置的服务账号(
var.service_account)拥有roles/cloudsql.client角色,具备访问目标Cloud SQL实例的权限 - Cloud SQL实例的区域需与Cloud Function区域匹配,或通过已配置的VPC连接器可达
- 对应SQLAlchemy连接串需适配配置,例如使用Unix Socket的连接格式为:
sqlalchemy.create_engine(f"postgresql+psycopg2://{user}:{password}@/{dbname}?host=/cloudsql/{cloud_sql_instance_connection_name}")
内容的提问来源于stack exchange,提问作者Akhil Amit Senroy
相关产品推荐
相关产品推荐

