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

如何使用Terraform跳过azurerm_api_management资源内指定proxy块的部署

解决方案

问题原因

  • count参数仅支持在资源、模块、数据源的根层级使用,不能直接作用于资源内部的嵌套块
  • proxy块属于azurerm_api_management资源的预定义嵌套参数,没有内置custom字段,自定义参数会直接报错

正确实现方式

使用Terraform的dynamic动态块语法实现条件生成嵌套块,修改main.tf中hostname_configuration部分的代码如下:

resource "azurerm_api_management" "apim_demo" {
  name                = var.apim_instance_name
  location            = azurerm_resource_group.apim_rg.location
  resource_group_name = azurerm_resource_group.apim_rg.name
  publisher_name      = var.apim_publisher_name
  publisher_email     = var.apim_publisher_email

  sku_name = var.apim_sku_name

  identity {
    type = "SystemAssigned"
  }
  
  hostname_configuration {
    # 第一个固定的proxy块保持不变
    proxy {
      default_ssl_binding          = true
      host_name                    = "qtech"
      key_vault_id                 = "https://ssl-key-test789.vault.azure.net/secrets/my-ssl-certificate"
      negotiate_client_certificate = true
    }

    # 第二个proxy块改为动态生成
    dynamic "proxy" {
      for_each = var.test_condition ? [1] : []
      content {
        default_ssl_binding          = false
        host_name                    = "ftech"
        key_vault_id                 = "https://ssl-key-test789.vault.azure.net/secrets/my-ssl-certificate2"
        negotiate_client_certificate = true
      }
    }
  }
}

代码说明

  • 动态块的for_each通过三元表达式控制:当var.test_condition为true时传入单元素列表,生成1个对应的proxy块;为false时传入空列表,不会生成该proxy块
  • content块内的配置和原有第二个proxy块的参数完全一致,不需要修改原有配置逻辑

内容的提问来源于stack exchange,提问作者devops-admin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:36:01