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
相关产品推荐
相关产品推荐

