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

Terraform创建databricks_rfa_access_request_destinations报错:provider_config不支持

解决Terraform中databricks_rfa_access_request_destinations的provider_config报错问题

报错原因分析

  • Provider版本不兼容:你使用的databricks provider版本是v1.113.0,而provider_config块是在v1.114.0及以上版本才正式引入的,旧版本无法识别该配置块。
  • Provider上下文冲突:当前代码指定了provider = databricks.accounts(账户级Provider),但provider_config是用于工作区级操作的参数,两者在低版本中无法混用,即使升级版本后也需要确认资源的适用层级。

正确实现方法

第一步:升级Databricks Provider版本

在你的versions.tf文件中更新Provider版本要求,确保使用v1.114.0或更高版本:

terraform {
  required_providers {
    databricks = {
      source  = "databricks/databricks"
      version = ">= 1.114.0"
    }
  }
}

执行terraform init -upgrade完成版本升级。

第二步:修正资源配置(动态分配工作区)

根据你的需求,有两种可行方案:

方案1:使用provider_config块(推荐,v1.114.0+支持)

移除账户级Provider指定,直接通过provider_config动态绑定工作区ID:

resource "databricks_rfa_access_request_destinations" "catalog_manager" {  
  for_each = var.catalogs  

  destinations = [for item in var.request_access_destinations: {
    destination_id = item.id
    destination_type = item.type
  }]  

  securable = {  
    type      = "CATALOG"  
    full_name = each.value.name  
  }  

  # 动态指定工作区ID,仅v1.114.0+支持
  provider_config {  
    workspace_id = data.databricks_mws_workspaces.all.ids[each.value.workspace_name]
  }  

  depends_on = [databricks_catalog.this]  
}

方案2:使用Provider别名(兼容更多场景)

如果需要更灵活的工作区绑定,可以提前定义多个工作区的Provider别名,然后通过for_each动态选择:

# 示例:动态生成工作区Provider别名(可结合data资源批量生成)
provider "databricks" {
  alias = "workspace_a"
  host = "https://${data.databricks_mws_workspaces.all.workspaces["workspace_a"].workspace_url}"
  # 补充认证参数(如token、oauth等)
}

provider "databricks" {
  alias = "workspace_b"
  host = "https://${data.databricks_mws_workspaces.all.workspaces["workspace_b"].workspace_url}"
  # 补充认证参数
}

# 资源中动态选择Provider别名
resource "databricks_rfa_access_request_destinations" "catalog_manager" {  
  for_each = var.catalogs  
  provider = databricks[each.value.workspace_alias]

  destinations = [for item in var.request_access_destinations: {
    destination_id = item.id
    destination_type = item.type
  }]  

  securable = {  
    type      = "CATALOG"  
    full_name = each.value.name  
  }  

  depends_on = [databricks_catalog.this]  
}

内容的提问来源于stack exchange,提问作者Myung Sik Chae_Nexus Lake Team

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 18:22:29