Условное выражение, подобное тому, которое вы показали, действительно является правильным способом express в Terraform. Как вы видели, Terraform не считает null
логическим значением false.
Не похоже, что это будет необходимо для данной конкретной ситуации, но если у вас есть входные переменные, которые используются во многих местах, где для всех применений требуется одинаковая логика нормализации / подготовки c, тогда вы можете выделить выражение в локальное значение , чтобы использовать его много раз:
variable "ami_id" {
type = string
default = null
}
data "aws_ami" "example" {
count = var.ami_id == null ? 1 : 0
# ...
}
locals {
ami_id = var.ami_id != null ? var.ami_id : data.aws_ami.example[0].id
}
resource "aws_instance" "example" {
# ... (other aws_instance arguments) ...
ami = local.ami_id
}
Затем вы можете использовать local.ami_id
много раз в модуле, не дублируя логи c, которые обрабатывают поиск значений по умолчанию.