Terraform 地形复杂类型值不为';行不通

Terraform 地形复杂类型值不为';行不通,terraform,terraform0.12+,Terraform,Terraform0.12+,这段代码由于以下错误而失败,我尝试将对象语法更改为映射语法,但也失败了 variable "evstream_cluster" { type = map(object({ name = string kafka_version = string broker = map(object({ node_count = number node_instance_type = string ebs_volume_size_gb = num

这段代码由于以下错误而失败,我尝试将对象语法更改为映射语法,但也失败了

variable "evstream_cluster" {

  type = map(object({
    name = string
    kafka_version = string
    broker = map(object({
      node_count = number
      node_instance_type = string
      ebs_volume_size_gb = number
    }))
  }))

  default = {
    name = "evstream",
    kafka_version = "2.2.1",
    broker = {
      node_count = 3,
      node_instance_type = "m5.large",
      ebs_volume_size_gb =  500
    }
  }
}

感谢您提供有用的值,这将有助于理解地形类型系统。

这是您所追求的对象的地图还是单个对象?如果是后者,这将起作用:

变量“evstream_cluster”{
类型=对象({
名称=字符串
卡夫卡版本=字符串
代理=对象({
节点计数=编号
节点\实例\类型=字符串
ebs\u体积\u大小\u gb=数量
})
})
默认值={
name=“evstream”,
卡夫卡大学版本=“2.2.1”,
经纪人={
节点计数=3,
节点\实例\类型=“m5.large”,
ebs\u体积大小\u gb=500
}
}
}

这是你要找的对象的地图还是一个对象?如果是后者,这将起作用:

变量“evstream_cluster”{
类型=对象({
名称=字符串
卡夫卡版本=字符串
代理=对象({
节点计数=编号
节点\实例\类型=字符串
ebs\u体积\u大小\u gb=数量
})
})
默认值={
name=“evstream”,
卡夫卡大学版本=“2.2.1”,
经纪人={
节点计数=3,
节点\实例\类型=“m5.large”,
ebs\u体积大小\u gb=500
}
}
}
> terraform -version
Terraform v0.12.25

> terraform validate
Error: Invalid default value for variable

  on variables.tf line 39, in variable "evstream_cluster":
  39:   default = {
  40:     name = "evstream"
  41:     kafka_version = "2.2.1"
  42:     broker = {
  43:       node_count = 3
  44:       node_instance_type = "m5.large"
  45:       ebs_volume_size_gb =  500
  46:     }
  47:   }

This default value is not compatible with the variable's type constraint:
element "name": object required.