将属性设置为null与在Terraform配置中不设置属性相同吗



我查看了terraform VPC模块的代码,发现了

resource "aws_subnet" "public" {
vpc_id     = aws_vpc_ipv4_cidr_block_association.secondary_cidr.vpc_id
cidr_block = "172.2.0.0/24"
availability_zone = null
}

根据AWS提供商的文档,availability_zone属性是可选的。

availability_zone设置为null是否与不列出所有内容相同?例如,这与编写以下配置的方式相同:

resource "aws_subnet" "in_secondary_cidr" {
vpc_id     = aws_vpc_ipv4_cidr_block_association.secondary_cidr.vpc_id
cidr_block = "172.2.0.0/24"
}

我以前从未见过。似乎这是一种在模块中声明可选变量的流行方式:

variable "private_subnet_assign_ipv6_address_on_creation" {
description = "Assign IPv6 address on private subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
type        = bool
default     = null
}

是的,如果使用null,则与不列出所有内容相同。来自文档:

一个表示缺失或遗漏的值。如果您将资源的一个参数设置为null,Terraform的行为就像您完全忽略了它一样——如果它有一个参数的默认值,它将使用该参数的缺省值,或者如果该参数是强制性的,则会引发错误。null在条件表达式中最有用,因此如果条件不满足,可以动态省略参数。

最新更新