Azure DevOps发布APIM时AzureBlob File Copy任务AzCopy报错如何解决
Azure DevOps Blob文件拷贝任务AzCopy非零退出码报错排查方案
报错信息:向存储账户“abc”中前缀为“vd1”的容器“mycontainer”上传内容失败,错误为:'AzCopy.exe exited with non-zero exit code while uploading files to blob storage.'
按照以下步骤依次排查即可定位并解决问题:
- 开启管道诊断日志拿到详细错误
在发布管道的变量配置页添加变量system.debug,值设为true,重新运行管道后查看任务输出的完整日志,从中提取AzCopy返回的具体错误原因,比如权限不足、源文件不存在、网络不通等明确提示。 - 验证服务主体权限配置
检查DevOps关联的Azure服务连接对应的服务主体权限:- 存储账户abc的访问控制(IAM)中,需要为服务主体授予存储Blob数据参与者角色,仅配置普通的「参与者」角色无法写入Blob数据
- 如果使用SAS令牌认证,需要确认令牌拥有对应容器的写入、创建权限,且令牌未过期
- 检查存储账户网络访问限制
如果存储账户开启了防火墙配置:- 使用微软托管代理时,需要将Azure DevOps所属区域的
AzureCloud服务标签加入存储账户的防火墙白名单 - 使用自托管代理时,需要将代理服务器的公网出口IP加入存储账户的防火墙白名单
- 使用微软托管代理时,需要将Azure DevOps所属区域的
- 校验源路径与目标配置正确性
- 检查要上传的源文件在发布构件中的路径是否正确,路径中是否包含特殊字符、空格,任务中填写的源路径与实际文件路径是否匹配
- 确认存储账户
abc中确实存在名为mycontainer的容器,前缀vd1的拼写正确,存储账户所属的Azure云环境(公有云/世纪互联/其他主权云)与服务连接配置一致
- 验证AzCopy版本与兼容性
- 将Azure Blob File Copy任务升级到最新的v3及以上版本,旧版本绑定的AzCopy工具存在已知兼容性问题
- 自托管代理可以先手动结束所有残留的
AzCopy.exe进程,避免进程锁导致的执行失败
- 本地复现验证
直接在代理机器上手动执行AzCopy命令验证上传逻辑,参考命令:azcopy copy "<本地源文件路径>" "https://abc.blob.core.windows.net/mycontainer/vd1?<SAS或服务主体认证串>" --recursive
手动执行返回的错误信息会更明确,可以直接针对性解决。
内容的提问来源于stack exchange,提问作者Raju K
相关产品推荐
相关产品推荐

