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

Terraform中为map(object)类型变量添加指定条件验证

给Terraform的map(object)变量添加验证规则

你可以在sm_secrets变量块中加入validation块,实现当create_sms_policy为true时,强制要求access_pattern不为null且不为空字符串的逻辑。具体代码如下:

variable "sm_secrets" {
  type = map(object({
    name                    = string,
    description             = string,
    recovery_window_in_days = optional(number),
    create_sms_policy       = optional(bool),
    access_pattern          = optional(string)
  }))

  validation {
    # 遍历所有secret对象,验证每个对象的规则
    condition     = alltrue([
      for secret in var.sm_secrets :
      # 逻辑:要么create_sms_policy不是true(包括未设置的情况),要么满足access_pattern非空非null
      secret.create_sms_policy != true || (
        secret.access_pattern != null && secret.access_pattern != ""
      )
    ])
    error_message = "当create_sms_policy设为true时,access_pattern必须不为null且不为空字符串。"
  }
}

规则说明

  • 利用alltrue和for表达式遍历map里的每个secret对象,确保所有对象都符合验证逻辑
  • 逻辑判断采用「或」关系:如果create_sms_policy不是true(包括未设置时的null值),则跳过检查;如果create_sms_policy为true,则必须满足access_pattern既不是null,也不是空字符串
  • 当有任何一个secret对象违反规则时,Terraform会输出error_message里的提示内容

内容的提问来源于stack exchange,提问作者pkaramol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:05:17