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

使用Terraform AzAPI修改VHub连接enableInternetSecurity失败求助

问题分析与解决方案

错误原因

这个InvalidJson错误的核心原因是:Azure管理API在处理PUT请求时,要求提交完整的资源属性结构,但你当前只提交了enableInternetSecurity这一个属性。API无法将不完整的JSON转换为HubVirtualNetworkConnection类型的完整资源对象,因此返回格式错误。

azapi_update_resource默认使用PUT方法(全量替换资源),而你需要的是部分更新单个属性,PUT方法不适合这种场景。

解决方案

修改Terraform代码,使用PATCH方法进行增量更新,只提交需要修改的属性即可:

resource "azapi_update_resource" "update_bastion_vwan_connection" {
  depends_on = [module.alz]
  type       = "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections@2023-11-01"
  name       = local.azurerm_virtual_hub_connection_bastion_name
  parent_id  = module.alz.azurerm_virtual_hub.virtual_wan["/subscriptions/${var.subscription_id_connectivity}/resourceGroups/${local.azurerm_resource_group_name}/providers/Microsoft.Network/virtualHubs/${local.azurerm_virtual_hub_name}"].id
  method     = "PATCH" # 指定使用PATCH进行部分属性更新

  body = jsonencode({
    properties = {
      enableInternetSecurity = false
    }
  })
}

原理说明

  • PUT方法:用于创建或全量替换资源,要求提交完整的资源属性集合,缺失必填属性会导致解析失败。
  • PATCH方法:用于增量更新资源,仅需要提交需要修改的属性,API会合并现有资源的属性与提交的属性,无需提供完整结构。

这种方式和你通过UI/AZ CLI修改的逻辑一致,都是仅更新单个开关属性,不会影响资源的其他配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:20:56