Terraform `name` vs `self_link` in GCP



在GCP中,当使用Terraform时,我看到我可以使用name属性以及self_link。所以,我想知道是否在某些情况下我必须使用这些。

例如:

resource "google_compute_ssl_policy" "custom_ssl_policy" {
name            = "my-ssl-policy"
profile         = "MODERN"
min_tls_version = "TLS_1_1"
}

这个对象,则可以称为:

ssl_policy = google_compute_ssl_policy.custom_ssl_policy.name

ssl_policy = google_compute_ssl_policy.custom_ssl_policy.self_link

我知道object.name返回Terraform对象名称,object.self_link返回GCP资源的URI。

我已经尝试了几个对象,它对两个属性都有效,所以我想知道这是微不足道的,还是在某些情况下我应该使用其中一个。

以下是官方文档中的定义:

几乎每个GCP资源都有一个名称字段。它们被用作标识资源的简短方法,以及资源的显示名称Cloud Console将在name字段中定义。

当在Terraform配置中链接资源时,您将主要想要使用不同的字段,即资源的self_link。就像名字,几乎每个资源都有一个self_link。它们看起来像:

https://www.googleapis.com/compute/v1/projects/foo/zones/us-central1-c/instances/terraform-instance

资源的self_link是对该资源的唯一引用。当在Terraform中链接两个资源,你可以使用Terraform避免插补打出自链接!

参考:https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/getting_started

一个例子,我可以部署两个云功能具有相同的名称/相同的项目,但在不同的地区。在这种情况下,如果您必须在Terraform代码中引用这两个资源,那么最好使用self_link,因为它是唯一的URI。

最新更新