从存储容器恢复 Azure Linux webapp 备份失败 PowerShell

Posted

技术标签:

【中文标题】从存储容器恢复 Azure Linux webapp 备份失败 PowerShell【英文标题】:Azure Linux webapp backup restore from storage container fail PowerShell 【发布时间】:2021-11-18 17:02:10 【问题描述】:

N:B 从 Portal 手动还原运行良好,而 Powershell 还原不起作用

我将通过 AzureDevops 管道作业使用 PowerShell 进行恢复。

在澳大利亚东部托管的 Azure 应用 Web 应用程序备份到配置 Azure 存储帐户的澳大利亚东南部。 Web 应用名称 mywebapp

我已将 Azure Linux Web 应用备份配置到 Azure 存储帐户容器。我正在尝试将备份恢复到 webapp。

这是我使用的步骤。

删除了澳大利亚东部的原始网络应用 (mywebapp) 在澳大利亚东南部地区创建了一个具有类似配置的新网络应用程序。

我正在尝试使用 PowerShell 进行恢复(备份在 Azure 存储帐户中)

这是我使用的命令

Restore-AzWebAppBackup -BlobName 'myapp_202109230658.zip' -Name 'myapplive' -Overwrite -ResourceGroupName 'myapp_migrated_env' -StorageAccountUrl 'https://amyappstorage.blob.core.windows.net/appbackup?sp=r&st=xxxxxxxxxxxxxxxxxxxx0:20:03Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx%3D' -debug

我使用生成的存储容器的 SAS URL 到 StorageAccountUrl

这是我遇到的错误

    

"代码": "BadRequest", "Message": "缺少必需参数 AccessKey。", “目标”:空, “细节”: [ “消息”:“缺少必需的参数 AccessKey。” , “代码”:“错误请求” , “错误实体”: "扩展代码": "01010", "MessageTemplate": "缺少必需的参数 0。", “参数”: [ “访问密钥” ], “内部错误”:[], “细节”: [], “代码”:“错误请求”, “消息”:“缺少必需的参数 AccessKey。” ], “内部错误”:空

Restore-AzWebAppBackup:长时间运行的操作失败,状态为“BadRequest”。 调试:AzureQo​​SEvent:模块:Az.Websites:2.8.2;命令名称:恢复-AzWebAppBackup; PS版本:7.1.4;成功:假;时长:00:03:56.0777035;例外:长时间运行的操作失败,状态为“BadRequest”。; 调试:完成发送指标。 调试:凌晨 2:24:56 - RestoreAzureWebAppBackup 结束处理。

遵循 Azure 文档,但恢复过程无效。

Restore-AzWebAppBackup 命令不支持任何 accesskey 参数

Restore-AzWebAppBackup
   [-AppServicePlan <String>]
   [-Databases <DatabaseBackupSetting[]>]
   [-IgnoreConflictingHostNames]
   [-ResourceGroupName] <String>
   [-Name] <String>
   [[-Slot] <String>]
   [-DefaultProfile <IAzureContextContainer>]
   [-StorageAccountUrl] <String>
   [-BlobName] <String>
   [-Overwrite]
   [<CommonParameters>]

所以我需要解决问题并恢复网络应用

【问题讨论】:

【参考方案1】:

我们已经在我们的本地环境中进行了测试,通过在我们的中心位置创建了 2 个具有相同配置的 web 应用程序。我们从其中一个 Web 应用程序中进行了备份,并尝试使用以下 PowerShell cmdlet 将相同的配置恢复到其他 Web 应用程序,这工作正常。

Restore-AzWebAppBackup -ResourceGroupName "<resourcegroupName>" -Name "<webNameNeedtobeRestoredto" -StorageAccountUrl "SAStokenurl_for_generatedBackup" -BlobName "<backupFileName>" -Overwrite

“代码”:“BadRequest”,“消息”:“缺少必需参数 AccessKey。”,“目标”:null,“详细信息”:[ “消息”:“缺少必需参数 AccessKey。” , "Code": "BadRequest" , "ErrorEntity": "ExtendedCode": "01010", "MessageTemplate": "缺少必需的参数 0。", "Parameters": [ "AccessKey" ] ,“InnerErrors”:[],“详细信息”:[],“代码”:“BadRequest”,“消息”:“缺少必需的参数 AccessKey。” ], "内部错误": null

基于Azure documentation,Restore-AzWebAppBackup 命令在 cmdlet 定义中没有访问密钥参数。

我们建议您通过Microsoft Q&A 发起讨论或通过关注link 提出技术支持代码,技术支持团队将帮助您从平台端解决问题。

【讨论】:

感谢您检查我的问题。我的同一区域和跨区域还原在美国区域工作。但我不知道为什么相同的命令在 AUS 地区失败。但是,现在我可以使用相同的命令恢复不同 AUS 区域的备份。太奇怪了。 @dedosan - 根据您的评论,我已经在同一个澳大利亚东南部地区测试了创建和恢复 Web 应用程序配置,它对我们来说工作正常。这是屏幕截图供参考imgur.com/nzvhd5M 很高兴我能提供帮助,您能否接受答案作为解决方案。这可以帮助将来有类似查询的其他社区用户

以上是关于从存储容器恢复 Azure Linux webapp 备份失败 PowerShell的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nodejs 将文件从 Azure 存储 blob(容器)复制到 Azure 文件共享

需要通过oledb连接从azure存储blob容器中读取excel文件

恢复文件从用户的机器上传到 Azure Blob 存储和从 Azure Blob 下载文件到用户的机器在 Typescript(angular) 从浏览器

使用 Powershell 从 Azure 存储子容器中删除所有文件

从 AKS 访问 Azure Blob 存储

如何从 Azure Functions 中的存储容器读取多个文件