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

如何创建带自定义域名与Key Vault证书的Azure APIM并解决部署错误

问题分析与解决方案

错误原因

你遇到的部署模板验证错误,是因为在同一个ARM模板中重复定义了同名的Microsoft.ApiManagement/service资源(两个resource apim块),ARM模板不允许同一模板内存在多个同名同类型的资源定义。

修正后的代码

将两个APIM资源合并为一个,同时整合系统分配身份、hostname配置,并修正Key Vault URI的构造方式(ARM模板中不能使用Azure CLI的az.environment()变量):

resource apim 'Microsoft.ApiManagement/service@2023-09-01-preview' = {
  name: variables.resources.apim.name
  sku: variables.resources.apim.sku
  location: resourceGroup().location
  properties: {
    publisherEmail: variables.resources.apim.publisher.email
    publisherName: variables.resources.apim.publisher.name
    hostnameConfigurations: [
      {
        type: 'Proxy'
        hostName: variables.resources.apim.hostName
        certificateSource: 'KeyVault'
        defaultSslBinding: true
        // 使用Key Vault资源引用获取正确的Vault URI
        keyVaultId: '${reference(keyVault.id, '2023-02-01').properties.vaultUri}secrets/savaco-dns'
      }
    ]
  }
  identity: {
    type: 'SystemAssigned'
  }
}

resource keyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: variables.resources.keyVault.name
}

resource apiKeyVaultRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  scope: keyVault
  name: guid(keyVault.id, apim.id, variables.rbac.keyVaultCertificateUser)
  properties: {
    roleDefinitionId: subscriptionResourceId(
      'Microsoft.Authorization/roleDefinitions',
      variables.rbac.keyVaultCertificateUser
    )
    principalId: apim.identity.principalId
    principalType: 'ServicePrincipal'
  }
  // 显式依赖APIM资源,确保主体ID已生成
  dependsOn: [apim]
}

关键修改说明

  • 合并APIM资源定义:将系统分配身份配置和hostname配置整合到同一个apim资源块中,避免重复定义。
  • 修正Key Vault URI构造:使用reference(keyVault.id, '2023-02-01').properties.vaultUri获取Key Vault的官方URI,替代原代码中Azure CLI专属的az.environment()变量(ARM模板不支持CLI语法)。
  • 添加显式依赖:给角色分配资源添加dependsOn: [apim],确保APIM的系统身份已创建完成,能正确获取principalId。

内容的提问来源于stack exchange,提问作者H. Pauwelyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:51:06