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

如何使用Terraform为Azure APIM配置专用终结点?

如何用Terraform配置Azure APIM专用终结点

核心配置逻辑

Azure APIM的专用终结点需要以下组件协同配置:

  • 已创建的APIM实例(支持外部模式或内部模式,内部模式默认仅允许VNet内访问,外部模式可同时兼容公网与专用终结点)
  • 虚拟网络及专用子网(子网必须禁用PrivateEndpointNetworkPolicies)
  • 专用终结点资源,关联APIM的专用链接服务
  • APIM与专用终结点的连接批准(微软托管服务需手动/自动批准,取决于配置)

完整Terraform代码示例

假设你已存在APIM实例和虚拟网络,以下是添加专用终结点的完整配置:

1. 创建专用子网(若未存在)

resource "azurerm_subnet" "apim_pe_subnet" {
  name                 = "apim-private-endpoint-subnet"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.2.0/24"]

  # 专用终结点所在子网必须禁用此策略
  private_endpoint_network_policies_enabled = false
}

2. 配置APIM专用终结点

resource "azurerm_private_endpoint" "apim_pe" {
  name                = "apim-private-endpoint"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  subnet_id           = azurerm_subnet.apim_pe_subnet.id

  private_service_connection {
    name                           = "apim-private-service-connection"
    private_connection_resource_id = azurerm_api_management.example.id
    subresource_names              = ["gateway"] # APIM专用链接的固定子资源值
    is_manual_connection           = false # false为自动批准(需对应权限),true则需手动在APIM门户批准
  }

  # 可选:添加专用DNS区域关联,实现VNet内通过APIM默认域名访问
  private_dns_zone_group {
    name                 = "apim-dns-group"
    private_dns_zone_ids = [azurerm_private_dns_zone.apim_private_zone.id]
  }
}

3. 配置专用DNS区域(推荐)

若需在VNet内通过APIM默认域名(如xxx.azure-api.net)访问,需创建并关联专用DNS区域:

resource "azurerm_private_dns_zone" "apim_private_zone" {
  name                = "privatelink.azure-api.net"
  resource_group_name = azurerm_resource_group.example.name
}

# 关联DNS区域到目标虚拟网络
resource "azurerm_private_dns_zone_virtual_network_link" "apim_dns_link" {
  name                  = "apim-dns-vnet-link"
  resource_group_name   = azurerm_resource_group.example.name
  private_dns_zone_name = azurerm_private_dns_zone.apim_private_zone.name
  virtual_network_id    = azurerm_virtual_network.example.id
  registration_enabled  = false
}

常见报错及解决

你遇到的配置报错,大概率是以下原因之一:

  • 子网策略未禁用:专用终结点所在子网必须设置private_endpoint_network_policies_enabled = false,否则无法创建
  • 子资源名称错误:APIM专用链接的子资源固定为gateway,填其他值会直接报错
  • 权限不足:若设置is_manual_connection = false,Terraform使用的服务主体需拥有APIM的Microsoft.ApiManagement/service/privateEndpointConnections/write权限,否则自动批准失败,此时可改为is_manual_connection = true,再到APIM门户的「专用终结点连接」中手动批准
  • VNet配置冲突:若APIM为内部模式(virtual_network_type = "Internal"),需确保专用终结点子网与APIM绑定的VNet一致,且无网络策略冲突

验证方式

部署完成后可通过以下方式确认配置生效:

  • 登录Azure门户,进入APIM实例的「专用终结点连接」,查看连接状态为「已批准」
  • 在VNet内的虚拟机上测试访问APIM的专用IP或默认域名,确认可正常连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:20:43