GCP 中的 Terraform `name` 与 `self_link`
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
returns Terraform 对象名称,object.self_link
returns GCP 资源的 URI。
我尝试了几个对象,它对两个属性都有效,所以我想知道这是否微不足道,或者在某些情况下我应该使用其中之一。
官方文档中的定义如下:
Nearly every GCP resource will have a name field. They are used as a
short way to identify resources, and a resource's display name in the
Cloud Console will be the one defined in the name field.
When linking resources in a Terraform config though, you'll primarily
want to use a different field, the self_link of a resource. Like name,
nearly every resource has a self_link. They look like:
https://www.googleapis.com/compute/v1/projects/foo/zones/us-central1-c/instances/terraform-instance
A resource's self_link is a unique reference to that resource. When
linking two resources in Terraform, you can use Terraform
interpolation to avoid typing out the self link!
参考:https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/getting_started
举个例子,我可以部署两个具有相同 name/same 项目但位于不同区域的云函数。在这种情况下,如果您必须在 Terraform 代码中引用这两个资源,最好使用 self_link,因为它是一个唯一的 URI。
在 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
returns Terraform 对象名称,object.self_link
returns GCP 资源的 URI。
我尝试了几个对象,它对两个属性都有效,所以我想知道这是否微不足道,或者在某些情况下我应该使用其中之一。
官方文档中的定义如下:
Nearly every GCP resource will have a name field. They are used as a short way to identify resources, and a resource's display name in the Cloud Console will be the one defined in the name field.
When linking resources in a Terraform config though, you'll primarily want to use a different field, the self_link of a resource. Like name, nearly every resource has a self_link. They look like:
https://www.googleapis.com/compute/v1/projects/foo/zones/us-central1-c/instances/terraform-instance
A resource's self_link is a unique reference to that resource. When linking two resources in Terraform, you can use Terraform interpolation to avoid typing out the self link!
参考:https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/getting_started
举个例子,我可以部署两个具有相同 name/same 项目但位于不同区域的云函数。在这种情况下,如果您必须在 Terraform 代码中引用这两个资源,最好使用 self_link,因为它是一个唯一的 URI。