我像这样创建了一个云运行服务
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
中声明模块的范围内可用于解析(例如用于其他模块的输入)。例如,如果此模块在根模块配置中声明,那么它可以在根模块配置中的其他名称空间中解析。