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

Terraform中databricks_mws_permission_assignment的workspace_id类型错误求助

解决方案:Terraform配置databricks_mws_permission_assignment时workspace_id类型错误

问题根源

核心问题在于:azurerm_databricks_workspace返回的workspace_id是字符串格式的超大数字,当传给要求number类型的databricks_mws_permission_assignment.workspace_id时,Terraform会自动将其转换为科学计数法格式的数值,而Databricks MWS API不接受这种格式。另外需要先确认:你的Azure Databricks工作区是否是通过Databricks多工作区(MWS)创建的——如果是直接用AzureRM部署的,选错资源类型也会导致这类问题。


解决方案1:修正资源类型(多数场景适用)

如果你的工作区是直接通过AzureRM创建的,不要用databricks_mws_permission_assignment,换成普通的databricks_permission_assignment资源即可,它支持直接传入字符串格式的workspace_id:

resource "databricks_permission_assignment" "workspace_perms" {
  workspace_id     = data.azurerm_databricks_workspace.workspace.workspace_id
  permission_level = "CAN_MANAGE" # 根据你的需求调整权限
  principal_id     = databricks_group.your_group.id # 替换为你的主体ID
}

解决方案2:强制转换为合规整数(仅当必须使用MWS资源时)

如果确实需要使用databricks_mws_permission_assignment,通过以下方式将字符串转为整数,规避科学计数法问题:

  • 使用parseint函数直接转换:
locals {
  workspace_id = parseint(data.azurerm_databricks_workspace.workspace.workspace_id, 10)
}

resource "databricks_mws_permission_assignment" "mws_perms" {
  account_id       = var.databricks_account_id # 替换为你的Databricks账号ID
  workspace_id     = local.workspace_id
  permission_level = "ADMIN" # 根据需求调整
  principal_id     = var.target_principal_id # 替换为目标主体ID
}
  • 如果仍出现科学计数法,尝试双重转换强制十进制格式:
locals {
  workspace_id = tonumber(format("%d", tonumber(data.azurerm_databricks_workspace.workspace.workspace_id)))
}
  • 额外检查:如果数据源返回的workspace_id带有隐藏空格/换行,先清理:
locals {
  workspace_id = parseint(trim(data.azurerm_databricks_workspace.workspace.workspace_id), 10)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:12:43