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

AzApi资源ID与类型不匹配及密钥版本编辑问题求助

解决AzApi禁用Key Vault密钥版本的问题

问题分析

你遇到的两个错误核心原因如下:

  • 第一个配置不匹配错误:ARM管理API不将密钥版本作为独立ARM资源管理,因此包含版本ID的resource_id与指定的type无法匹配
  • 第二个404错误:你使用了ARM管理端点(management.azure.com)执行密钥版本操作,但这类操作需要直接调用Key Vault的专用端点({vault-name}.vault.azure.net)

Azure Key Vault的密钥版本状态修改,需通过Key Vault专用API而非ARM管理API完成。

正确配置示例

以下是调整后的azapi_resource_action配置,可在销毁阶段禁用指定密钥版本:

resource "azapi_resource_action" "disable_secret_version_on_destroy" {
  for_each = local.secrets

  # 指定Key Vault密钥资源类型,无需包含版本ID
  type        = "Microsoft.KeyVault/vaults/secrets@2023-02-01"
  # resource_id格式:密钥基础路径(不含版本)+ 版本查询参数
  resource_id = "${var.kv_id}/secrets/${each.value.secret_name}?api-version=7.4&version=${each.value.version}"
  method      = "PATCH"
  when        = "destroy"
  # 关键配置:禁用ARM管理端点,直接调用Key Vault专用API
  use_mgmt_endpoint = false

  body = jsonencode({
    attributes = {
      enabled = false
    }
  })
}

关键说明

  • use_mgmt_endpoint = false:必须设置该参数,让AzApi直接调用Key Vault专用API,而非ARM管理API
  • resource_id格式:使用密钥的基础路径(不含版本),通过查询参数version指定要修改的版本,同时指定Key Vault API版本(如7.4)
  • 权限要求:执行操作的服务主体需拥有Key Vault的Secret Permissions中的Set权限
  • body格式:用jsonencode确保格式合规,直接设置enabled = false即可禁用目标密钥版本

补充验证

你可通过以下格式在Postman中验证请求有效性:

  • 请求URL:https://{vault-name}.vault.azure.net/secrets/{secret-name}?api-version=7.4&version={version-id}
  • 请求方法:PATCH
  • 请求体:{"attributes": {"enabled": false}}
  • 认证方式:Azure AD OAuth2,需持有对应密钥操作权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:18:22