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

Terraform Optional属性类型定义报错,原代码曾正常运行6个月

问题排查与解决

报错原因

Terraform版本更新后,optional()属性修饰符的语法规则发生了变化:旧版本(如1.3.x及更早)允许通过optional(类型, 默认值)的方式为可选属性指定默认值,但新版本(1.4.x及以上)仅允许optional(类型)的写法,属性默认值需要统一放在object类型的默认值定义中。你的代码之前能正常运行,是因为当时使用的Terraform版本支持旧语法,近期版本升级后触发了这个兼容性报错。

修复方案

修改origin_cookies变量的定义,将属性默认值从optional()参数中移到变量的default块里:

variable "origin_cookies" {
  description = "Determines whether any cookies in viewer requests are included in the origin request key and automatically included in requests that CloudFront sends to the origin. Valid values are none, whitelist, all, allExcept."
  type = object({
    behavior = optional(string)
    items    = optional(set(string))
  })
  default = {
    behavior = "none"
    items    = toset([])
  }
}

补充说明

  • items的类型是set(string),使用toset([])显式生成空集合,避免Terraform将默认值推断为list类型导致隐式转换警告。
  • 如果暂时无法调整Terraform版本,也可以回退到1.3.x及更早版本,但不推荐长期使用旧版本,建议优先适配新语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:23:18