terraform - Terraform 云运行服务 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 的 value - https://default-hml2qtrgfq-uw.a.run.app。就像是

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

这给了我一个错误:

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

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

回答1

如果您声明 https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_service#url 的输出,例如:

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

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

相似文章