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

Azure Linux WebApp通过PowerShell从存储容器恢复备份失败咨询

解决方案

根因说明

你遇到的报错是Az.Websites 2.8.2版本的已知BUG:该版本的Restore-AzWebAppBackup命令未正确处理SAS URL的权限解析逻辑,即使传入合法的SAS URL,后台接口仍然会要求传入未暴露的AccessKey参数。

解决步骤

方案1:升级Az.Websites模块(优先推荐)

这是最简便的修复方式,微软在4.0.0及以上版本的Az.Websites模块中已经修复了该BUG:

  • 执行命令升级模块:
Update-Module -Name Az.Websites -Force
  • 验证版本是否符合要求:
Get-Module Az.Websites -ListAvailable | Select-Object Version
  • 确认版本≥4.0.0后,直接执行你原来的恢复命令即可,无需修改任何参数。

如果是在Azure DevOps管道中使用,需要在执行恢复命令前增加升级模块的步骤,避免托管代理预装的模块版本过低。

方案2:改用存储账号密钥拼接访问URL(无需升级模块)

如果暂时无法升级模块,可以直接用存储账号访问密钥拼接StorageAccountUrl参数,绕过SAS解析问题:

  1. 获取存储账号访问密钥:
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName <存储账号所属资源组名> -Name amyappstorage)[0].Value
  1. 拼接存储访问URL:
$storageUrl = "https://amyappstorage.blob.core.windows.net/appbackup`$$storageKey"
  1. 使用新的URL执行恢复命令:
Restore-AzWebAppBackup -BlobName 'myapp_202109230658.zip' -Name 'myapplive' -Overwrite -ResourceGroupName 'myapp_migrated_env' -StorageAccountUrl $storageUrl

方案3:直接调用ARM原生接口(极端情况兼容)

如果上述两种方案都不生效,可以直接调用Azure底层ARM接口执行恢复操作,完全绕过PowerShell模块的BUG:

$restoreParams = @{
    storageAccountUrl = '你原来的SAS URL'
    blobName = 'myapp_202109230658.zip'
    overwrite = $true
}
Invoke-AzResourceAction -ResourceGroupName myapp_migrated_env -ResourceType Microsoft.Web/sites -ResourceName myapplive -Action restore -Parameters $restoreParams -ApiVersion 2022-03-01 -Force

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:24:02