Terraform创建Cloud Run域名映射提示Route不存在如何配置资源依赖?
解决方案
该报错是因为Terraform默认未识别两个资源的依赖关系,导致google_cloud_run_domain_mapping在google_cloud_run_service完全就绪前就启动创建,关联的Route资源还未生成。
你只需要做两处调整即可解决:
- 在
google_cloud_run_domain_mapping资源中添加depends_on参数,显式声明依赖Cloud Run服务资源 - 建议将
route_name属性值改为直接引用Cloud Run服务的name属性,避免硬编码字符串出现名称不一致的问题
修改后的完整代码如下:
resource "google_cloud_run_service" "order" { autogenerate_revision_name = false location = "asia-southeast1" name = "order" project = "mycompany" template { spec { containers { args = [] command = [] image = "asia.gcr.io/mycompany/order:1.1.11" ports { container_port = 7075 } resources { limits = { "cpu" = "1000m" "memory" = "2048Mi" } requests = {} } } } } } resource "google_cloud_run_domain_mapping" "order" { location = var.region name = "order.${var.public_domain}" # 显式声明依赖Cloud Run服务创建完成 depends_on = [google_cloud_run_service.order] metadata { namespace = var.project_id } spec { # 直接引用资源属性,避免硬编码错误 route_name = google_cloud_run_service.order.name } }
调整后首次执行terraform apply就不会再出现时序导致的创建失败问题,GCP provider会在标记Cloud Run服务创建完成前等待服务及关联Route资源就绪,再启动域名映射的创建流程。
内容的提问来源于stack exchange,提问作者fauzanx
相关产品推荐
相关产品推荐

