如何在terraform中分割嵌套列表中的第一个元素

如何在terraform中分割嵌套列表中的第一个元素,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我想将var.domain\u names作为list(list(string))传递,示例: domain_names = [ ["foo.com",".*foo-1.com",".*foo-2.com"], ["bar.com",".*bar-1.com"], ... ] 所以它应该为foo.com、bar.com创建证书。。。但添加其他类似的。*foo-1.com。。。给受试者提供备选名称 请使用terraform 0.12.18帮助我解决此问题 resource "aws_

我想将
var.domain\u names
作为
list(list(string))
传递,示例:

domain_names = [
  ["foo.com",".*foo-1.com",".*foo-2.com"],
  ["bar.com",".*bar-1.com"],
  ...
]
所以它应该为foo.com、bar.com创建证书。。。但添加其他类似的。*foo-1.com。。。给受试者提供备选名称

请使用terraform 0.12.18帮助我解决此问题

resource "aws_acm_certificate" "certificate" {
  domain_name               = var.domain_names[count.index]
  subject_alternative_names = slice(var.domain_names, 1, length(var.domain_names))
  validation_method         = var.validation_method

  tags = {
    Name      = var.domain_names[count.index]
    owner     = "xx"
    terraform = "true"
  }

  lifecycle {
    create_before_destroy = true
  }
}

您可以使用
映射
for_每个
循环来实现这一点。例如:

variable "domain_names" {
  type = map(list(string))
  default = {
    "foo.com" = ["foo.com", ".*foo-1.com", ".*foo-2.com"]
    "bar.com" = [".*bar-1.com"]
  }
}

resource "aws_acm_certificate" "certificate" {
  for_each                  = var.domain_names
  domain_name               = each.key
  subject_alternative_names = each.value
  validation_method         = var.validation_method

  tags = {
    Name      = each.key
    owner     = "xx"
    terraform = "true"
  }

  lifecycle {
    create_before_destroy = true
  }
}
有关循环和条件的更多信息,请参阅