Power Automate调用Databricks REST API遇403权限问题求助
问题现象
通过Power Automate流调用Databricks REST API执行SQL语句时,返回403错误「Unauthorized access to workspace」。具体情况:
- 流中第一步可成功获取Bearer Token
- 第二步调用
/api/2.0/sql/statements接口失败 - 服务主体权限、API范围均已验证无误
- 相同请求在Postman中可正常运行,甚至直接使用Power Automate获取的Token在Postman中请求也无异常
请求示例:
{ "uri": "https://adb-xxxxxxxx.12.azuredatabricks.net/api/2.0/sql/statements", "method": "POST", "headers": { "Authorization": "Bearer Token", "Content-Type": "application/json" }, "body": { "statement": "A select query \n", "warehouse_id": "warehouseid" } }
响应示例:
{ "statusCode": 403, "headers": { "X-Request-ID": "f7b4f4c6", "x-databricks-reason-phrase": "Unauthorized access to workspace: ", "Vary": "Accept-Encoding", "Date": "Wed, 18 Dec 2024 23:34:04 GMT", "Server": "databricks", "Content-Type": "application/json; charset=utf-8", "Content-Length": "81" }, "body": { "error_code": 403, "message": "Unauthorized access to workspace: " } }
排查方向
既然Postman用相同Token能正常请求,问题大概率出在Power Automate的请求构造细节上,重点检查以下几点:
1. Authorization头的变量引用是否正确
确保Power Automate中HTTP动作的Authorization头格式为Bearer @{获取Token动作的输出},注意:
- 「Bearer」和Token之间必须有一个空格
- 直接引用动态内容时,不要手动添加多余的引号或空格
- 检查动态内容的路径是否正确,比如是否是
@{outputs('Get_Bearer_Token')?['body']?['access_token']}(根据实际动作名称调整)
2. 请求体的格式设置
在Power Automate的HTTP动作中:
- 确认「Body type」选择的是「Raw」
- 「Content type」选择「application/json」
- 请求体的JSON格式是否正确,没有多余的转义字符或语法错误(比如示例中的换行符
\n是否在Power Automate中被正确处理)
3. HTTP动作的其他设置干扰
- 检查是否启用了「使用代理」,部分企业代理会修改请求头导致Authorization信息丢失或篡改
- 确认HTTP动作没有开启「跟随重定向」导致请求被转发到其他地址,引发权限验证失败
4. Token传递时的隐形字符问题
有时候Power Automate的动态内容输出可能包含隐形的换行或空格,可通过以下方式验证:
- 在调用API前添加一个「Compose」动作,输出Token值,查看是否有多余字符
- 手动将Compose输出的Token复制到Postman测试,确认是否依然有效
5. 工作区URI的正确性
确认Power Automate中填写的Databricks工作区URI和Postman中完全一致,没有拼写错误、多余的路径或端口号
内容的提问来源于stack exchange,提问作者Satya Azure
相关产品推荐
相关产品推荐

