terraform aws_elasticsearch_域-如果启用区域_感知_为假-为什么考虑区域_感知_配置而不忽略?

terraform aws_elasticsearch_域-如果启用区域_感知_为假-为什么考虑区域_感知_配置而不忽略?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在使用terraform在AWS中创建许多elasticsearch集群。每个集群可以有不同数量的实例。如果有一个实例,那么应该有一个AZ。如果有两个实例,那么应该有两个AZ。如果我的terraform aws_elasticsearch_域资源中有一个实例,我将zone_awareness_enabled设置为false。问题是,zone_awareness_config并没有像我假设的那样被忽略。因此,如果我有两个AZ,我需要将zone\u awareness\u配置添加到tf文件中。我

我正在使用terraform在AWS中创建许多elasticsearch集群。每个集群可以有不同数量的实例。如果有一个实例,那么应该有一个AZ。如果有两个实例,那么应该有两个AZ。如果我的terraform aws_elasticsearch_域资源中有一个实例,我将zone_awareness_enabled设置为false。问题是,zone_awareness_config并没有像我假设的那样被忽略。因此,如果我有两个AZ,我需要将zone\u awareness\u配置添加到tf文件中。我必须管理两个文件

这是群集配置:

cluster_config {
      instance_type = "c5.large.elasticsearch"
      instance_count = var.es_instance_count
      dedicated_master_enabled = var.dedicated_master_enabled
      dedicated_master_count = var.es_instance_count
      zone_awareness_enabled = var.es_instance_count > 1 ? true : false
      zone_awareness_config {
        availability_zone_count = var.es_instance_count
      }
  }
cluster_配置应该适用于2或3个实例,但也适用于1个AZ中的1个实例。但事实并非如此。如果我有1个AZ-我必须从文件中删除区域\感知\配置。 如果我有1个AZ,我怎么能忽略区域\u感知\u配置?

您可以尝试在实例计数大于1时仅添加区域\u感知\u配置块

dynamic "zone_awareness_config" {
  for_each = var.es_instance_count > 1 ? [var.es_instance_count] : []
  content {
    availability_zone_count = var.es_instance_count
  }
}

此示例未使用for_each循环中设置的值。它真的应该是:

content {
    availability_zone_count = zone_awareness_config.value
  }

您使用的是哪个版本的AWS提供程序?AWS提供程序版本是2.27.0 terraform v0.12之前的版本中是否存在动态块?@AdilSadik否,它们不存在(仅添加此项,以防其他人以相同的问题登陆此处)