Terraform-使用合并函数使参数不例外 地形版本 地形配置文件 错误 预期行为

Terraform-使用合并函数使参数不例外 地形版本 地形配置文件 错误 预期行为,terraform,Terraform,资源“kubernetes_服务”(和其他kubernetes资源)的metadata.labels参数尝试接收映射()。这只需创建带有以下标签的资源(两个地图): 实际行为 如果不使用merge()函数,只需放置一个映射即可。 但是当使用merge()函数时,Terraform表示参数不例外 复制步骤 有一个模块,其参数类型为map(string)(在本例中为kubernetes\u服务,参数为metadata.labels),它将map(string)类型的变量与另一个map(string)

资源“kubernetes_服务”(和其他kubernetes资源)的metadata.labels参数尝试接收映射()。这只需创建带有以下标签的资源(两个地图):

实际行为 如果不使用
merge()
函数,只需放置一个映射即可。 但是当使用
merge()
函数时,Terraform表示参数不例外

复制步骤 有一个模块,其参数类型为
map(string)
(在本例中为
kubernetes\u服务
,参数为
metadata.labels
),它将
map(string)
类型的变量与另一个
map(string)
合并。 将
map(string)
类型的变量传递给此模块

然后,
terraform应用

问题: 为什么使用
merge()
函数使参数不被排除


提前感谢您的帮助

您是否可以更新您的问题以包含完整的错误消息输出,包括代码段和Terraform提供的关于变量值的任何提示?您是否可以更新您的问题以包含完整的错误消息输出,包括代码段和Terraform提供的关于变量值的任何提示?
Terraform v0.12.18
+ provider.aws v2.42.0
+ provider.grafana v1.5.0
+ provider.helm v0.10.4
+ provider.kubernetes v1.10.0
+ provider.local v1.4.0
+ provider.null v2.1.2
+ provider.ovh v0.5.0
+ provider.random v2.2.1
+ provider.template v2.1.2
+ provider.vault v2.7.0
# mymodule/service.k8s.tf
resource "kubernetes_service" "wordpress" {
  metadata {
    labels = merge(var.deployment_config.labels, {
      app = "myname
      engine = "wordpress"
      tier = "frontend"
    })  
  }
  ...
}
# mymodule/variables.tf
variable "deployment_config" {
  description = "The deployment configuration."
  type = object({
    labels = map(string)
  })
}
# modules.tf
module "my-module" {
  source = "./mymodule"
  deployment_config = {
    labels = {
      environment = "production"
    }
  }
}
An argument named "labels" is not expected here.
labels = {
  app = "myname"
  engine = "wordpress"
  tier = "frontend"
  environment = "production"
}