Azure Data Factory复制HTTP源Zip至Blob存储报错及方案问询
解决HTTP源(S3匿名Zip文件)复制到Azure Blob时的源不可寻错误
问题原因
HTTP源不支持随机读取操作,而直接解压Zip的复制活动依赖该能力,因此必须分两个复制活动完成操作:先将Zip文件完整转存到Azure临时存储,再从临时存储读取并解压到目标位置。
第一步:二进制复制Zip文件到临时Azure Blob存储
配置第一个复制活动,将HTTP源的Zip文件完整复制到Azure Blob的临时容器:
- 源端配置:
- 数据源类型选择
HTTP - 相对URL使用你的函数输出路径(确保与HTTP链接服务的基础URL拼接后指向正确的S3 Zip文件)
- 设置复制行为为二进制复制(无需启用任何解压选项,完整保留Zip文件)
- 数据源类型选择
- 目标端配置:
- 数据目标类型选择
Azure Blob Storage - 指定临时存储容器(建议在同Blob账户下创建专用临时容器)
- 文件名可使用动态值(如
@{pipeline().RunId}.zip)确保每次运行生成唯一文件,避免冲突
- 数据目标类型选择
第二步:从临时存储复制并解压到目标Blob
配置第二个复制活动,读取临时存储的Zip文件并解压到最终目标容器:
- 源端配置:
- 数据源类型选择
Azure Blob Storage - 指向第一步生成的临时Zip文件(可通过动态内容引用第一步的输出路径,或直接指定临时容器+文件名)
- 启用解压设置:选择解压格式为
Zip,并勾选保留原文件结构的选项
- 数据源类型选择
- 目标端配置:
- 数据目标类型选择
Azure Blob Storage - 指定最终的目标容器
- 确保复制行为设置为保留原文件格式(默认即可,无需额外修改)
- 数据目标类型选择
额外注意事项
- 可在管道末尾添加删除Blob活动,清理临时存储中的Zip文件,避免占用存储空间
- 确保HTTP链接服务的基础URL正确设置(示例为
https://s3.amazonaws.com/rds.nsrl.nist.gov/RDS/rds_2023.09.1/),函数输出的相对URL(如RDS_2023.09.1_modern_minimal_delta.zip)能正确拼接成完整访问地址
内容的提问来源于stack exchange,提问作者user11090827
相关产品推荐
相关产品推荐

