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

如何在使用AzureRM提供程序的Terraform中指定资源提供程序版本

Terraform配置Azure资源时指定API版本的方法

首先明确核心设计差异:

  • 和ARM模板支持给单资源显式配置apiVersion的逻辑不同,官方azurerm提供程序不开放单资源API版本的自定义配置入口。
  • ARM模板本质是直接透传调用Azure RM REST API,所以必须显式声明调用的API版本;但azurerm提供程序已经把所有支持资源的适配API版本封装在了提供程序的版本包内,你使用的azurerm提供程序版本,就决定了所有资源部署时默认调用的API版本,不需要额外给单个资源配置参数。

常规场景下匹配目标API版本的方式

你只需要在Terraform配置中明确锁定azurerm提供程序的版本即可,配置示例如下:

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=3.99.0" # 锁定到你需要的具体版本
    }
  }
}

provider "azurerm" {
  features {}
}

每个正式发布的azurerm版本都会在更新说明中标注内置的各资源API版本信息,你只要选择内置了你需要的目标API版本的提供程序版本即可,不需要额外调整单资源配置。

需要强制使用特定API版本的特殊场景处理

如果你需要用的API版本(多为新上线的预览版API)还没被当前稳定版azurerm提供程序封装支持,有两种可选方案:

  • 方案1:升级azurerm提供程序到已经适配了目标API版本的更高版本,优先选择正式发布的稳定版使用
  • 方案2:使用azapi提供程序做补充配置,这个提供程序的调用逻辑和ARM模板一致,支持手动指定任意资源的API版本,适合使用azurerm尚未覆盖的新功能/预览API,配置示例如下:
# 注意:type参数中@后面的部分就是你指定的API版本
resource "azapi_resource" "example_storage" {
  type      = "Microsoft.Storage/storageAccounts@2023-05-01"
  name      = "teststorage001"
  location  = "chinaeast2"
  parent_id = azurerm_resource_group.example.id

  body = jsonencode({
    sku = {
      name = "Standard_GRS"
    }
    kind = "StorageV2"
    properties = {
      supportsHttpsTrafficOnly = true
    }
  })
}

注意:非必要不推荐手动强制指定API版本,azurerm封装的资源会自动做参数校验、状态同步、兼容性适配,手动指定API版本时这些能力会缺失,容易出现部署失败、配置漂移的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:39:16