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

Azure子网委托Terraform代码报错修复及Postgres子网配置请求

Azure子网委托Terraform代码报错修复(Invalid index)

错误原因

  1. 强制为所有子网添加delegation块,但subnet1、subnet2未配置委托,触发属性不存在的错误
  2. 属性读取路径错误:actions属于delegation.service_delegation嵌套结构,而非直接在each.value根节点
  3. delegation.name和service_delegation.name错误引用子网名称,应使用委托配置里的对应值

修复方案

使用Terraform动态块dynamic "delegation",仅为配置了委托的子网生成该块,同时修正属性引用路径:

resource "azurerm_subnet" "subnet" {
  for_each = var.subnets

  name                 = each.value.name
  address_prefixes     = each.value.address_prefixes
  service_endpoints    = lookup(each.value, "service_endpoints", [])
  virtual_network_name = azurerm_virtual_network.virtual_network.name
  resource_group_name  = data.azurerm_resource_group.resource_group.name

  private_endpoint_network_policies_enabled = lookup(each.value, "private_endpoint_network_policies_enabled", false)

  # 仅当子网配置了delegation时才生成该块
  dynamic "delegation" {
    for_each = each.value.delegation ? [each.value.delegation] : []
    content {
      name = delegation.value.name
      service_delegation {
        name    = delegation.value.service_delegation.name
        actions = delegation.value.service_delegation.actions
      }
    }
  }
}

关键修正点

  • 使用lookup函数处理可选属性,为未配置的字段提供默认值(比如service_endpoints默认空列表,private_endpoint_network_policies_enabled默认false)
  • dynamic "delegation"块通过条件判断,仅在存在委托配置时生成对应块
  • 正确引用委托嵌套属性,匹配变量定义里的层级结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:33:25