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

Terraform创建Azure CDN端点多投递规则时遇for_each不支持错误

解决Terraform Azure CDN端点投递规则的for_each报错问题

错误原因

Terraform中,azurerm_cdn_endpoint资源的delivery_rule属于嵌套块,语法上不支持直接在块内部声明for_each参数,这是嵌套块的固有限制导致的报错。

解决方案

改用Terraform的dynamic块来批量生成多个delivery_rule,dynamic块就是专门用来在资源内部动态创建多个嵌套块实例的语法。

修改后的代码示例:

resource "azurerm_cdn_endpoint" "default" {
  # 保留你原有的其他必填参数,比如name、profile_name、origin_host_header等

  dynamic "delivery_rule" {
    for_each = {
      for deliveryrule in var.delivery_rules : deliveryrule.name => deliveryrule
    }
    content {
      name  = delivery_rule.value.name
      order = delivery_rule.value.order

      request_scheme_condition {
        operator     = delivery_rule.value.operator
        match_values = delivery_rule.value.match_values
      }

      url_redirect_action {
        redirect_type = delivery_rule.value.redirect_type
        protocol      = delivery_rule.value.protocol
      }
    }
  }
}

关键注意点

  • 将原delivery_rule块替换为dynamic "delivery_rule",块名要和原嵌套块保持一致
  • for_each逻辑移到dynamic块的参数中,迭代逻辑和你原本的写法一致
  • 动态块内部通过delivery_rule.value(而非原代码的each.value)访问当前迭代的规则数据
  • 确保var.delivery_rules变量是包含对应属性的列表结构,属性字段要和代码中的取值匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:13:29