Terraform 云 运行 服务 URL

Terraform Cloud Run Service URL

我像这样创建了一个云运行服务

terraform {
  required_version = ">= 1.1.2"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 4.1.0"
    }
    google-beta = {
      source  = "hashicorp/google-beta"
      version = "~> 4.2.0"
    }
  }
}

provider "google" {
  project     = "main_project"
  region      = "us-central-1"
  credentials = "<my-key-path>"
}

resource "google_cloud_run_service" "default" {
  name     = "cloudrun-srv"
  location = "us-central1"

  template {
    spec {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

我想使用输出变量保存创建的服务 url 的值 - https://default-hml2qtrgfq-uw.a.run.app。像

output "cloud_run_instance_url" {
  value = google_cloud_run_service.default.url
}

这给了我一个错误:

地形规划 ╷ │ 错误:不支持的属性 │ │ 在 main.tf 第 40 行,在输出“cloud_run_instance_url”中: │ 40: 值 = google_cloud_run_service.default.url │ │ 此对象没有名为“url”的参数、嵌套块或导出属性。 ╵

如何获取此输出值并将其分配给变量,以便云调度程序等其他服务可以指向它?

如果您声明 url resource attribute 的输出,例如:

output "cloud_run_instance_url" {
  value = google_cloud_run_service.default.status.0.url
}

然后它将在模块在命名空间 module.<declared module name>.cloud_run_instance_url 中声明的范围内用于解析(例如对其他模块的输入)。例如,如果这个模块是在根模块配置中声明的,那么它可以在根模块配置中其他地方的那个命名空间中解析。