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
相关产品推荐
相关产品推荐

