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

Terraform map(string)使用:Cloudflare区域覆盖设置模块开发问题

解决Terraform Cloudflare Zone Settings Override的动态配置问题

你的核心问题是没正确使用Terraform的动态嵌套块语法,之前的for_each用在了资源层面,而实际上需要针对settings嵌套块做动态生成。

正确实现代码

首先保留你的变量定义(如果需要支持非字符串类型的设置,可以把map(string)改成map(any)):

variable "settings" {
  type = map(string)
  default = {}
}

然后修改资源配置,用dynamic块遍历你的map参数,生成符合要求的settings嵌套块:

resource "cloudflare_zone_settings_override" "this" {
  zone_id = cloudflare_zone.this.id

  dynamic "settings" {
    for_each = var.settings
    content {
      name  = settings.key
      value = settings.value
    }
  }
}

关键说明

Cloudflare的zone_settings_override资源要求每个配置项都通过settings嵌套块定义,每个块必须包含name(配置项名称)和value(配置值)两个参数,而不是直接用key = value的形式赋值。通过dynamic块遍历你的map,就能把每个键值对转换成对应的嵌套块。

比如你传入这样的变量值:

settings = {
  "always_online" = "on"
  "minify"        = "on"
}

Terraform会自动生成两个settings块,分别对应这两个配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:52:34