Databricks API无法列出工作区内容的问题咨询与排查
Databricks API 工作区内容列出及授权验证问题解答
1. 如何正确列出工作区内容?
你遇到的两个错误可以通过以下步骤修正:
- 修正请求方法:Databricks的
workspace/listAPI仅支持POST请求,你之前使用GET方法是导致404错误的核心原因。 - 正确传递请求体:
Invoke-DatabricksAPI的-Body参数接受哈希表(Hashtable)类型,无需提前转为JSON字符串,直接传入定义好的哈希表即可,这解决了参数类型转换错误的问题。 - 简化调用逻辑:通过
Connect-Databricks建立连接后,Invoke-DatabricksAPI会自动复用会话中的Token和Region信息,无需重复传入这两个参数。
修正后的完整代码如下:
if (-not (Get-PackageProvider -ListAvailable -Name NuGet)) { Install-PackageProvider nuget -Scope CurrentUser -Force } if (-not (Get-Module -ListAvailable -Name azure.databricks.cicd.tools)) { Install-Module -Name azure.databricks.cicd.tools -Scope CurrentUser -Force } Import-Module -Name azure.databricks.cicd.tools try { # 建立Databricks连接 Connect-Databricks -BearerToken $ADB_Token -Region $region # 定义用户目录路径(建议去掉末尾斜杠,避免路径识别问题) $userFolderPath = "/Users/mysuer@email.com" # 构造请求体哈希表 $body = @{ path = $userFolderPath } # 调用API:使用POST方法,直接传入哈希表格式的Body $workspaceContent = Invoke-DatabricksAPI -Method POST -API "workspace/list" -Body $body # 输出工作区内容 $workspaceContent } catch { Write-Error "执行出错: $_" }
额外注意:确保$userFolderPath与Databricks工作区中实际的用户目录路径完全一致(包括邮箱拼写,部分环境可能区分大小写),如果路径末尾带斜杠导致识别问题,可尝试去掉斜杠重试。
2. 未出现401 UNAUTHORIZED错误是否说明授权已成功?
是的,未出现401错误说明授权已经成功。
Databricks API在身份验证失败时会直接返回401 UNAUTHORIZED错误(比如Token无效、权限不足、Region配置错误等)。当前返回404错误,说明请求已经通过了身份验证环节,服务器正常接收并处理了请求,只是因为请求方法错误或路径识别问题,才返回"资源不存在"的提示。
内容的提问来源于stack exchange,提问作者play_something_good
相关产品推荐
相关产品推荐

