Я хотел бы понять ссылку на ресурсы в 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 на многих онлайн-форумах.
На какие ресурсы, использующие terraform, нам нужно ссылаться по .name и .id?
Такого жесткого понятия ссылки не существует, это похоже на аномалию использования, специфичную для этого ресурса.
Я думаю, это должно быть
event_notification_configs {
pubsub_topic_id = google_pubsub_topic.topic.id
}
Из google_cloudiot_registry я вижу, что id
возвращается ресурсом, который содержит имя ресурса, и то же самое передается pubsub_topic_name
части event_notification_configs
блока.
Если вы хотите изменить pubsub_topic_name
на pubsub_topic_id
, вы можете создать PR на кодовой базе провайдер.
В заключение, если вы хотите сослаться на вывод какого-либо ресурса/источника данных, вам нужно будет получить атрибуты, возвращенные в ответе, и назначить их соответствующему полю в следующем ресурсе.