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

Terraform配置Cloudflare Zero Trust组邮箱后缀规则遇限制求助

解决Cloudflare Terraform配置Zero Trust邮箱结尾匹配规则的问题

针对你遇到的Terraform中无法配置UI里“匹配以指定值结尾的邮箱”规则的问题,可以通过以下方式解决:

核心修正:使用email类型的ends_with运算符

Cloudflare Terraform Provider的cloudflare_access_rule资源中,include块支持email类型并指定operator = "ends_with",这和UI里的“以指定值结尾的邮箱”选项完全对应,替代原代码中的email_domain配置即可实现需求。

修正后的完整代码(含语法修复与优化)

variable "groups" {
  type = list(object({
    name            = string
    id              = string
    application_ids = list(string)
  }))
  default = [
    {
      name            = "Cloudflare-Group-1"
      id              = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
      application_ids = ["xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"]
    }
  ]
}

resource "cloudflare_access_rule" "email_rule" {
  for_each = { for g in var.groups : g.id => g }
  zone_id  = local.zone_id
  mode     = "allow"
  
  configuration {
    target = "group"
    value  = each.value.id
  }

  include {
    email {
      operator = "ends_with"
      value    = "@example.com"
    }
  }
}

resource "cloudflare_access_application" "groups_applications" {
  for_each = {
    for g in var.groups :
    "${g.id}-${app_id}" => { group_id = g.id, app_id = app_id }
    for app_id in g.application_ids
  }
  
  zone_id  = local.zone_id
  group_id = each.value.group_id
  app_id   = each.value.app_id
}

关键优化说明

  • 用for_each替代原代码的count:避免索引越界问题,当groups列表内容变化时,资源重建逻辑更稳定,不会因为索引移位导致不必要的资源销毁重建。
  • 修复原代码语法错误:补全了变量定义、资源块的闭合括号,确保代码可正常执行。
  • 精准匹配邮箱结尾:email块的ends_with运算符直接对应UI功能,相比email_domain更贴合你描述的需求场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:40