You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform变量验证规则触发逻辑异常及修正方法咨询

问题原因分析

Terraform变量验证的核心逻辑是:condition表达式返回true时判定变量合法(验证通过);返回false时,才会抛出指定的error_message。

你当前的验证条件写反了——原本想在变量包含foo或bar键时触发错误,但你的条件是当包含这两个键时返回true(验证通过),不包含时返回false(触发错误),因此出现了和预期完全相反的结果。

正确实现方式

要实现“仅当configurations包含foo或bar时触发验证提示”,需要将条件取反,让表达式在包含这两个键时返回false,从而触发错误。

以下是两种等价的正确写法:

写法一:对原条件整体取反

variable "configurations" {
  type = map(any)

  validation {
    condition     = ! (contains(keys(var.configurations), "foo") || contains(keys(var.configurations), "bar"))
    error_message = "'foo' or 'bar' are not allowed in configurations."
  }
}

写法二:拆分取反后用逻辑与组合

variable "configurations" {
  type = map(any)

  validation {
    condition     = !contains(keys(var.configurations), "foo") && !contains(keys(var.configurations), "bar")
    error_message = "'foo' or 'bar' are not allowed in configurations."
  }
}

这两种写法都会在configurations包含foo或bar键时,让condition返回false,触发错误提示;不包含时返回true,验证正常通过。

内容的提问来源于stack exchange,提问作者Frédéric De Lène Mirouze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:37:12