使用 PowerShell 还原已删除的应用服务应用

如果意外删除了 Azure 应用服务中的应用,则可以使用 Az PowerShell 模块中的命令将其还原。

注意

  • 初始删除 30 天后,已删除的应用将从系统中清除。 清除应用后,将无法恢复它。
  • 消耗计划或弹性高级计划上托管的函数应用不支持取消删除功能。
  • 在应用服务环境中运行的应用服务应用不支持快照。 因此,应用服务环境中运行的应用服务应用不支持撤消删除功能和克隆功能。

重新注册应用服务资源提供程序

有些客户可能会遇到这样的问题:检索已删除的应用的列表时失败。 若要解决该问题,请运行以下命令:

 Register-AzResourceProvider -ProviderNamespace "Microsoft.Web"

列出已删除的应用

若要获取已删除的应用集合,可以使用 Get-AzDeletedWebApp

若要获取有关特定的已删除应用的详细信息,可以使用:

Get-AzDeletedWebApp -Name <your_deleted_app> -Location <your_deleted_app_location> 

详细信息包括:

  • DeletedSiteId:应用的唯一标识符,适用于删除了多个同名应用的情况
  • SubscriptionID:包含已删除的资源的订阅
  • 位置:原始应用的位置
  • ResourceGroupName:原始资源组的名称
  • 名称:原始应用的名称。
  • Slot:槽的名称。
  • Deletion Time:删除应用的时间

还原已删除的应用

注意

  • 消耗计划或弹性高级计划上托管的函数应用不支持Restore-AzDeletedWebApp
  • Restore-AzDeletedWebApp cmdlet 还原已删除的 Web 应用。 TargetResourceGroupName、TargetName 和 TargetSlot 指定的 Web 应用会被已删除 Web 应用的内容和设置覆盖。 如果未指定目标参数,则会自动使用已删除的 Web 应用的资源组、名称和槽填充这些参数。 如果目标 Web 应用不存在,则会在 TargetAppServicePlanName 指定的应用服务计划中自动创建它。
  • 默认情况下,Restore-AzDeletedWebApp 会同时还原应用配置以及任何内容。 如果只想还原内容,请在此 cmdlet 中使用 -RestoreContentOnly 标志。
  • 导入到应用的自定义域、绑定或证书不会恢复。 应用还原后,需要重新添加它们。

如下所示,确定要还原的应用后,可以使用 Restore-AzDeletedWebApp 进行还原。

可在以下文章中找到完整的 cmdlet 参考信息:Restore-AzDeletedWebApp

还原到原始应用名称:

Restore-AzDeletedWebApp -TargetResourceGroupName <my_rg> -Name <my_app> -TargetAppServicePlanName <my_asp>

还原到其他应用名称:

Restore-AzDeletedWebApp -ResourceGroupName <original_rg> -Name <original_app> -TargetResourceGroupName <target_rg> -TargetName <target_app> -TargetAppServicePlanName <target_asp>

将槽还原到目标应用:

Restore-AzDeletedWebApp -TargetResourceGroupName <my_rg> -Name <my_app> -TargetAppServicePlanName <my_asp> -Slot <original_slot>

注意

部署槽不会作为应用的一部分进行还原。 如果需要还原过渡槽,请使用 -Slot <slot-name> 标志。 commandlet 正在将原始槽还原到目标应用的生产槽。 默认情况下,Restore-AzDeletedWebApp 会同时将应用配置以及任何内容还原到目标应用。 如果只想还原内容,请在此 cmdlet 中使用 -RestoreContentOnly 标志。

仅将站点内容还原到目标应用

Restore-AzDeletedWebApp -TargetResourceGroupName <my_rg> -Name <my_app> -TargetAppServicePlanName <my_asp> -RestoreContentOnly

还原适用于通过 -DeletedSiteId 删除了多个同名应用的情况

Restore-AzDeletedWebApp -ResourceGroupName <original_rg> -Name <original_app> -DeletedId /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Web/locations/location/deletedSites/1234 -TargetAppServicePlanName <my_asp>

命令的输入包括:

  • 目标资源组:要将应用还原到的目标资源组
  • TargetName:要还原到的已删除应用的目标应用
  • TargetAppServicePlanName:链接到该应用的应用服务计划
  • 名称:应用的名称,应全局唯一。
  • ResourceGroupName:已删除应用的原始资源组
  • Slot:已删除应用的槽
  • RestoreContentOnly:默认情况下,Restore-AzDeletedWebApp 会同时还原应用配置以及任何内容。 如果只想还原内容,可将 -RestoreContentOnly 标志与此 commandlet 配合使用。

注意

如果应用以前托管在应用服务环境中,然后被删除,则还原该应用的前提是相应的应用服务环境仍然存在。

还原已删除的函数应用

如果函数应用之前托管在专用应用服务计划上,只要之前使用的是默认应用服务存储,就可以还原。

  1. 使用 Get-AzDeletedWebApp cmdlet 提取要还原的应用版本的 DeletedSiteId:
Get-AzDeletedWebApp -ResourceGroupName <RGofDeletedApp> -Name <NameofApp> 
  1. 在专用计划中新建一个函数应用。 请参阅如何在门户中创建应用,了解操作说明。
  2. 使用此 cmdlet 还原到新创建的函数应用:
Restore-AzDeletedWebApp -ResourceGroupName <RGofnewapp> -Name <newApp> -deletedId "/subscriptions/xxxx/providers/Microsoft.Web/locations/xxxx/deletedSites/xxxx"

内容位于存储帐户中的 Azure 文件上,因此托管在消耗计划或弹性高级计划中的函数应用目前暂不支持取消删除 (Restore-AzDeletedWebApp)。 如果不是“硬”删除了 Azure 文件存储帐户,或者帐户存在且文件共享尚未删除,则可以使用以下步骤作为解决方案:

  1. 在消耗或高级计划中新建一个函数应用。 请参阅如何在门户中创建应用,了解操作说明。

  2. 将以下应用设置设置为引用旧存储帐户,其中包含上一个应用中的内容。

    应用设置 建议的值
    AzureWebJobsStorage 已删除的应用使用的存储帐户的连接字符串。
    WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 已删除的应用使用的存储帐户的连接字符串。
    WEBSITE_CONTENTSHARE 已删除的应用使用的存储帐户上的文件共享。