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

使用Azure模板扩展fileUris部署VM下载失败及Blob下载问题求助

解决Azure Blob下载失败及Custom Script扩展404错误的实战方案

针对你遇到的两个Azure相关问题,我整理了针对性的排查和解决步骤,帮你快速定位问题:


问题1:无法从Azure Blob下载文件

这类问题大多和权限、路径、网络三个维度有关,按以下顺序排查:

  • 确认Blob存在性与路径正确性:Azure Blob的名称和路径是大小写敏感的,先登录Azure Portal,找到对应的存储账户和容器,确认你要下载的Blob确实存在,且文件名、路径和你使用的完全一致(比如不要把Script.sh写成script.sh,除非Blob本身就是小写)。
  • 检查容器与Blob的访问权限:
    • 如果是测试场景,可以临时把容器权限设置为匿名读取访问(容器),尝试再次下载。如果能成功,说明是权限问题,后续再调整为更安全的方式(比如使用SAS令牌或RBAC角色)。
    • 如果使用SAS令牌访问,确保令牌包含**读取(r)**权限,有效期未过期,且生成时的参数正确。可以用Azure CLI重新生成一个测试令牌:
      az storage blob generate-sas --account-name <你的存储账户名> --container-name <容器名> --name <Blob文件名> --permissions r --expiry 2024-12-31T23:59:59Z --auth-mode login
      
  • 排查网络限制:
    • 如果你是从本地客户端下载,确认本地防火墙、代理没有阻止访问Azure存储服务的出站请求。
    • 如果你是从VM内部下载,检查VM所在的NSG出站规则是否允许访问Storage服务标签,同时查看存储账户的防火墙设置,是否将VM的IP或其所在虚拟网络加入了允许列表。

问题2:Custom Script扩展启动VM时出现404错误

错误提示failed to download file[1]: unexpected status code: got=404 expected=200,说明扩展无法访问你指定的fileUris中的URL,按以下步骤解决:

  • 先在VM内测试URL有效性:登录到目标VM,用curl(Linux)或Invoke-WebRequest(Windows)直接访问fileUris中的URL,比如:
    # Linux
    curl -I "https://你的存储账户.blob.core.windows.net/容器名/脚本文件.sh?SAS令牌"
    
    # Windows
    Invoke-WebRequest -Uri "https://你的存储账户.blob.core.windows.net/容器名/脚本文件.ps1?SAS令牌" -Method Head
    
    如果返回404,说明URL本身有问题,先修复URL;如果返回200,再排查扩展的其他配置。
  • 确保URL包含有效的SAS令牌:如果Blob容器是私有,VM默认没有权限访问,必须在fileUris的URL后拼接具有读取权限的SAS令牌。正确的URL格式应为:
    https://<存储账户名>.blob.core.windows.net/<容器名>/<文件名>?<完整的SAS令牌>
  • 检查存储账户的网络访问策略:如果存储账户设置了防火墙,需要将VM所在的虚拟网络添加到存储账户的允许列表,或者临时允许所有网络访问(仅测试用)。同时确认VM的NSG出站规则允许访问Azure存储服务。
  • 查看扩展日志定位细节:在VM内部可以查看扩展的详细日志,找到具体的错误原因:
    • Windows系统:C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
    • Linux系统:/var/log/azure/Microsoft.Compute.CustomScriptExtension
  • 验证ARM模板中的扩展配置:确保fileUris是正确的数组格式,且commandToExecute中引用的文件名和Blob文件名一致,比如:
    "properties": {
      "publisher": "Microsoft.Compute",
      "type": "CustomScriptExtension",
      "typeHandlerVersion": "1.10",
      "settings": {
        "fileUris": [
          "https://yourstorageaccount.blob.core.windows.net/scripts/setup.sh?sv=2023-11-03&ss=b&srt=sco&sp=r&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxxxxxx"
        ],
        "commandToExecute": "sudo sh setup.sh"
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:18:57