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

Terraform无法在加拿大东部及美国西部创建Azure恢复服务Vault

解决方案

问题根源

报错的核心原因是:加拿大东部(canadaeast)、美国西部(westus)等区域不支持Recovery Services Vault使用Zone Redundant Storage(ZRS,区域冗余存储),但代码中强制指定了storage_mode_type = "ZoneRedundant",触发Azure API的参数校验失败。报错信息里的NO_PARAM是Azure返回的模糊提示,实际是存储冗余类型不符合区域支持范围。

修复方案

方案1:手动修改存储冗余类型

将storage_mode_type改为该区域支持的通用类型,比如GeoRedundant(异地冗余存储)或LocallyRedundant(本地冗余存储),这两种类型在所有支持Recovery Services Vault的区域都可用:

resource "azurerm_recovery_services_vault" "backup_vault" {
  name                = "mydev-vault"
  location            = var.rg_location
  resource_group_name = azurerm_resource_group.backup_vault.name
  sku                 = "Standard"

  soft_delete_enabled = true

  public_network_access_enabled = false
  # 替换为支持的存储类型
  storage_mode_type             = "GeoRedundant"

  depends_on = [
    azurerm_resource_group.backup_vault
  ]
}

方案2:自动适配区域(推荐)

通过Terraform条件表达式,让代码根据目标区域自动选择合适的存储冗余类型,无需手动切换:

# 定义不支持ZRS的区域列表,可根据实际情况补充
locals {
  non_zrs_regions = ["canadaeast", "westus"]
}

resource "azurerm_recovery_services_vault" "backup_vault" {
  name                = "mydev-vault"
  location            = var.rg_location
  resource_group_name = azurerm_resource_group.backup_vault.name
  sku                 = "Standard"

  soft_delete_enabled = true

  public_network_access_enabled = false
  # 根据区域自动选择存储模式
  storage_mode_type             = contains(local.non_zrs_regions, var.rg_location) ? "GeoRedundant" : "ZoneRedundant"

  depends_on = [
    azurerm_resource_group.backup_vault
  ]
}

验证

修改代码后,重新执行terraform apply,即可在canadaeast、westus区域成功创建Recovery Services Vault。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:22:29