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

如何基于环境变量有条件启用/禁用azurerm_cdn_endpoint规则与规则动作

azurerm_cdn_endpoint规则动态配置实现方案

你可以通过Terraform的动态嵌套块或者规则内置的enabled参数两种方式实现按环境差异化配置,具体如下:

方案1:动态块方式(prod环境完全移除规则)

当var.env不等于dev时,直接不生成对应的global_delivery_rule配置块,适合不需要在prod环境保留规则定义的场景:

resource "azurerm_cdn_endpoint" "cdn_endpoint" {
  # 原有其他配置保持不变
  name                = "your-cdn-endpoint"
  profile_name        = azurerm_cdn_profile.your_cdn.name
  resource_group_name = azurerm_resource_group.your_rg.name
  # 其余参数省略...

  dynamic "global_delivery_rule" {
    # 条件匹配时返回长度为1的列表生成块,不匹配返回空列表不生成块
    for_each = var.env == "dev" ? [1] : []
    content {
      cache_expiration_action {
        behavior = "BypassCache"
      }
    }
  }
}

方案2:enabled参数控制(prod环境保留规则但禁用)

如果需要在所有环境保留规则定义,只是非dev环境禁用规则,可以直接用global_delivery_rule内置的enabled参数控制:

resource "azurerm_cdn_endpoint" "cdn_endpoint" {
  # 原有其他配置保持不变
  # 其余参数省略...

  global_delivery_rule {
    # dev环境启用规则,其他环境禁用
    enabled = var.env == "dev"
    cache_expiration_action {
      behavior = "BypassCache"
    }
  }
}

两种方式可根据你的实际配置需求选择,如果有多条差异化规则,可以分别给每条规则添加对应的条件判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:06:01