如何在 terraform 中引用 GCP 资源?

how to refer GCP resources in terraform?

我想了解 terraform 中的资源引用。

示例: 在我的项目中,pubsub 主题已使用 .name 和 .id

引用
  resource "google_pubsub_topic" "topic" {
      name = "my_topic"
  }

resource "google_pubsub_subscription" "subscription" {
  name  = "my_subscription"
  topic = google_pubsub_topic.topic.name
  }

 resource "google_cloudiot_registry" "cloudiot" {
  name      = "my_iot_registry"
  region    = "us-central1"
  log_level = "ERROR"

  event_notification_configs {
    pubsub_topic_name = google_pubsub_topic.topic.id
  }

  mqtt_config = {
    mqtt_enabled_state = "MQTT_ENABLED"
  }
}

我无法从许多在线论坛中获取有关通过 .name/.id 引用的区别的信息。

我们需要通过 .name 和 .id 引用哪些使用 terraform 的资源?

没有这样的硬引用概念,这似乎是该资源特定用法的异常。

我想应该是

event_notification_configs {
    pubsub_topic_id = google_pubsub_topic.topic.id
}

google_cloudiot_registry,我看到 id 由包含资源名称的资源返回,并且同样被传递给 event_notification_configs 块的 pubsub_topic_name 部分。

如果您希望将 pubsub_topic_name 更改为 pubsub_topic_id,您可以在 provider 代码库上创建 PR。

总而言之,如果您想引用某些 resource/data 来源的输出,您需要获取响应中返回的属性并将其分配给下一个资源中的适当字段。