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

使用Terraform Azapi更新应用注册ID URI时遇Provider错误求助

问题分析与解决方案

核心问题

你遇到的无法获取provider hashicorp/azapi的可用版本错误,本质是**azapi_update_resource的配置完全错误**,导致Terraform解析资源时出现异常,进而误触发了provider源的错误提示。你要更新的是Azure AD应用注册,但当前配置指向了Azure Web App的资源类型,完全不符合需求。

错误点拆解

  1. 资源类型错误:type = "Microsoft.Web/sites@2022-03-01"是Azure Web App的资源类型,而应用注册属于Azure AD,对应的类型应为Microsoft.AAD/applicationRegistrations@2023-01-01(或其他兼容的API版本)。
  2. 父资源ID错误:parent_id使用了服务主体(Service Principal)的object_id,但应用注册的更新应该直接指向应用注册自身的资源上下文,而非服务主体ID。
  3. provider版本未锁定:required_providers中未指定azapi的版本,可能引发版本兼容问题。

修正后的配置

1. 更新provider.tf(添加版本约束)

terraform {
  required_providers {
    azapi = {
      source  = "Azure/azapi"
      version = ">= 1.13.0" # 锁定版本范围,避免兼容问题
    }
    azuread = {
      source  = "hashicorp/azuread"
      version = ">= 2.41.0"
    }
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.0.0"
    }
  }
  backend "azurerm" {
    # 必要信息
  }
}

provider "azuread" {
  tenant_id = "tenant_id"
}

provider "azapi" {
  subscription_id = "subscription_id"
  tenant_id       = "tenant_id"
}

2. 修正main.tf中的azapi_update_resource

resource "azapi_update_resource" "update_app_reg" {
  # 应用注册对应的Azure AD资源类型及API版本
  type = "Microsoft.AAD/applicationRegistrations@2023-01-01"
  # 直接使用应用注册的object_id作为资源名称
  name = azuread_application.app_reg.object_id
  # 父资源为租户ID,对应Azure AD的租户上下文
  parent_id = "/tenants/${azuread_application.app_reg.tenant_id}"

  # 更新Application ID URI
  body = jsonencode({
    "properties" = {
      "identifierUris" = [
        "api://${azuread_application.app_reg.application_id}"
      ]
    }
  })

  depends_on = [azuread_application.app_reg]
}

更优替代方案

若你使用的azuread provider版本支持,更推荐直接在azuread_application资源中配置identifier_uris,无需额外使用azapi_update_resource,更符合Terraform声明式风格:

resource "azuread_application" "app_reg" {
  display_name = "your-app-reg-name"
  # 直接定义Application ID URI
  identifier_uris = ["api://${azuread_application.app_reg.application_id}"]
  # 其他配置项...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:45:06