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

Terraform配置Azure Cosmos DB多子网ID报错:无法访问字符串属性

解决Terraform中azurerm_cosmosdb_account添加多子网virtual_network_rule的报错问题

错误原因

你遇到的报错核心是:data.azurerm_subnet.np-subnets.*.id返回的是纯字符串类型的子网ID列表,但你在dynamic块里错误地尝试访问virtual_network_rule.value.id——字符串属于原始类型,没有id属性,因此触发"Can't access attributes on a primitive-typed value (string)"错误。

修复方案

提供两种可行的修改方式,按需选择:

方案1:直接使用子网ID字符串列表

既然data.azurerm_subnet.np-subnets.*.id已经是子网ID的字符串集合,直接在dynamic块中引用virtual_network_rule.value即可:

dynamic "virtual_network_rule" {
  for_each = data.azurerm_subnet.np-subnets.*.id
  content {
    id   = virtual_network_rule.value
    ignore_missing_vnet_service_endpoint = true
  }
}

方案2:遍历子网数据源对象(更具扩展性)

如果后续可能需要用到子网的其他属性(比如名称、地址前缀等),可以直接遍历整个子网数据源对象,再访问其id属性:

dynamic "virtual_network_rule" {
  for_each = data.azurerm_subnet.np-subnets
  content {
    id   = virtual_network_rule.value.id
    ignore_missing_vnet_service_endpoint = true
  }
}

验证建议

修改后执行terraform plan,检查生成的virtual_network_rule块是否正确关联了所有目标子网ID,确认配置无误后再执行terraform apply。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:06:20