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

Terraform部署Azure应用网关出现"Unresolved Reference"错误求助

Terraform Azure应用网关部署错误修复方案

错误1:redirect_configuration动态块中"Unresolved Reference redirect"

问题原因

Terraform版本迭代后,对变量属性引用的校验更严格。遍历var.request_routing_rule_set时直接引用x.redirect,若变量内部分元素未定义redirect字段,或变量无明确类型约束,就会触发该错误。

修复步骤

  • 用try()函数做容错处理,避免直接引用可能不存在的字段:
    dynamic "redirect_configuration" {
      for_each = [for x in var.request_routing_rule_set : x if try(x.redirect, null) != null]
      content {
        # 保留原有redirect配置内容
      }
    }
    
  • 若元素明确为map类型,也可用lookup()函数指定默认值:
    dynamic "redirect_configuration" {
      for_each = [for x in var.request_routing_rule_set : x if lookup(x, "redirect", null) != null]
      content {
        # 保留原有redirect配置内容
      }
    }
    

错误2:azurerm_key_vault_secret中"Unresolved Reference name"

问题原因

azurerm_key_vault_secret的for_each遍历集合内的元素未包含name字段,或遍历的集合结构不符合预期(比如误用map却引用each.value.name)。

修复步骤

  • 针对不同遍历集合结构调整引用方式:
    • 若遍历的是列表,用try()容错处理缺失的name字段:
      resource "azurerm_key_vault_secret" "example" {
        for_each = { for idx, item in var.your_secret_list : idx => item }
        name     = try(each.value.name, "secret-${idx}")
        # 保留其他配置项
      }
      
    • 若遍历的是map,直接用each.key作为secret名称:
      resource "azurerm_key_vault_secret" "example" {
        for_each = var.your_secret_map
        name     = each.key
        # 保留其他配置项
      }
      
  • 若变量结构无法修改,通过local临时转换集合结构,确保元素包含可引用的名称字段:
    locals {
      formatted_secrets = [
        for item in var.your_secret_list : {
          name = try(item.name, item.id) # 用现有字段替代name
          # 保留其他需要的属性
        }
      ]
    }
    
    resource "azurerm_key_vault_secret" "example" {
      for_each = { for s in local.formatted_secrets : s.name => s }
      name     = each.value.name
      # 保留其他配置项
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:17:33