如何在for_loop中指定条件



我如何在for_each中使用条件,以便仅当 == "DNS" 否则忽略资源的创建validation_method时,才会创建/触发以下资源。但是在早期的地形(11 个版本(中,我们可以使用

计数 = var.validation_method == "DNS" ? 长度(var.domain_names( : 0

我的var.domain_names是map(list(string((,例如

domain_names = {
"foo.com" = ["*.foo.com"]
}

请给我一些解决方案。使用地形 0.12.20 版本

resource "aws_route53_record" "validation" {
for_each   = var.validation_method == "DNS" ? var.domain_names :
name       = aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_name
type       = aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_type
zone_id    = data.aws_route53_zone.selected[each.key].zone_id
ttl        = "300"
records    = [aws_acm_certificate.certificate.domain_validation_options.0.resource_record_value]
depends_on = [aws_acm_certificate.certificate.domain_name]
}

正如你所指出的,你需要在三元的两侧都有一致的类型。由于您使用的是右侧map(list(string)),因此为了不创建任何资源,需要是一个空映射:{}

variable "domain_names" {
type = map(list(string))
default = {
"foo.com" = ["*.foo.com"]
}
}
resource "aws_route53_record" "validation" {
for_each   = var.validation_method == "DNS" ? var.domain_names : {}
...
}

相关内容

  • 没有找到相关文章

最新更新