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

在Azure Data Factory中调用Get Blob API遇认证错误,咨询可行性与方案

问题:ADF中调用Blob REST API认证失败及二进制数据导入SQL需求

我在Azure Data Factory(ADF)里尝试调用Get Blob API,结果收到错误:

"Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature."

我的需求是读取图片或非结构化文件,把二进制数据插入SQL Server的varchar(max)列里。当前管道配置如下:

  • 链接服务:
    • 类型:Rest
    • 基础URL:https://{account name}.blob.core.windows.net/
    • 身份验证类型:匿名
    • 服务器证书:已禁用
  • 数据集:
    • 类型:Rest
    • 相对URL:{container name}/xyz.jpeg
  • 复制数据活动:
    • 请求方法:get
    • 请求头:
      • x-ms-date:@concat(formatDateTime(utcNow(), 'yyyy-MM-ddTHH:mm:ss'), 'Z')
      • x-ms-version:2018-11-09
      • x-ms-blob-type:BlockBlob
      • Authorization:SharedKey {storage name}:CBntp....{SAS key}....LsIHw%3D(该密钥取自SAS连接字符串的https&sig=CBntp{SAS key}LsIHw%3D部分)

想请教两个问题:

  1. 能不能在ADF管道里调用Azure Blob REST API?
  2. 怎么解决这个认证错误?

解决方案

一、ADF调用Blob REST API的可行性

完全可以,但其实没必要舍近求远——ADF本身内置了Azure Blob存储的专属连接器,直接用这个连接器处理二进制文件,比手动构造REST API请求简单得多,还能避开认证、请求头构造这类容易出错的环节。当然,如果业务场景确实需要用REST API方式,ADF是支持的。

二、认证错误的解决方法

你当前的问题核心是混用了SharedKey和SAS两种认证方式:

  1. 错误根源:Authorization头用的是SharedKey格式,但你填入的是SAS的签名部分。SharedKey需要用存储账户的原始访问密钥生成签名,而SAS是独立的认证机制,不需要Authorization头,而是直接把SAS参数拼接在请求URL里。
  2. 两种修正方案任选其一:
    • 方案1:改用SAS认证(推荐,更简单)
      • 把链接服务的身份验证类型从「匿名」改成「SAS」。
      • 将完整的SAS令牌(从?sv=开始到结尾的全部内容)填入链接服务的SAS令牌字段。
      • 复制数据活动里删掉Authorization、x-ms-date、x-ms-blob-type这些手动添加的请求头——SAS认证会自动处理这些参数,手动添加反而会导致签名不匹配。
      • 数据集的相对URL保持{container name}/xyz.jpeg即可。
    • 方案2:正确使用SharedKey认证
      • 链接服务身份验证类型改成「账户密钥」,填入存储账户的原始访问密钥(不是SAS的sig片段)。
      • 复制数据活动里不需要手动编写Authorization头,ADF会自动生成符合要求的签名和请求头,你只需要确保x-ms-version设置正确即可。
  3. 针对你的业务需求的额外建议:如果只是要把二进制文件导入SQL Server的varchar(max)列,直接用ADF的Blob存储连接器作为源,SQL Server作为目标即可。在复制活动中设置源为二进制格式,然后将源数据映射到目标的varchar(max)列,整个过程不需要调用任何API,配置更简单、效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:54:18