创建Databricks服务主体OBO令牌时遇ENDPOINT_NOT_FOUND错误求助
解决Databricks Terraform配置中databricks_permissions的ENDPOINT_NOT_FOUND错误
问题分析
你遇到的ENDPOINT_NOT_FOUND: Unsupported path: /api/2.0/accounts/<my account>/scim/v2/Me错误,核心原因是操作上下文不匹配:databricks_permissions资源中authorization = "tokens"属于工作区级别的权限操作,但你的Terraform Provider可能配置成了账户级上下文(指向accounts.cloud.databricks.com),导致请求被发送到了错误的端点。
解决方案
1. 确认Databricks Provider的上下文配置
确保你的Terraform Provider配置是工作区级而非账户级:
- 工作区Provider的
host应为具体工作区的URL(例如https://<workspace-id>.cloud.databricks.com) - 账户级Provider的
host是https://accounts.cloud.databricks.com,仅用于账户级资源(如账户级服务主体、组等)
如果需要同时管理账户和工作区资源,可配置两个Provider实例:
# 账户级Provider(用于创建账户级服务主体) provider "databricks" { alias = "account" host = "https://accounts.cloud.databricks.com" account_id = "<your-account-id>" # 其他认证配置(如service_principal认证) } # 工作区级Provider(用于配置工作区权限、OBO令牌相关操作) provider "databricks" { alias = "workspace" host = "https://<your-workspace-id>.cloud.databricks.com" # 其他认证配置 }
2. 为databricks_permissions指定工作区级Provider
修改你的databricks_permissions资源,明确使用工作区级Provider:
resource "databricks_permissions" "token_usage" { count = length(var.principals) provider = databricks.workspace # 指定工作区Provider authorization = "tokens" access_control { service_principal_name = databricks_service_principal.sp[count.index].application_id permission_level = "CAN_USE" } }
3. 验证服务主体的工作区访问权限
虽然你的服务主体配置了workspace_access = true,但如果是账户级创建的服务主体,需要确保它已被正确添加到目标工作区。可通过Databricks UI检查:工作区 -> 设置 -> 服务主体,确认目标SP存在且状态为活跃。
额外提示
- OBO令牌的权限配置完全属于工作区范畴,所有相关操作必须在工作区上下文的Provider下执行
- 若你的服务主体是工作区级创建的,只需确保Provider指向该工作区即可,无需额外配置账户级Provider
内容的提问来源于stack exchange,提问作者Rafa
相关产品推荐
相关产品推荐

