如果在Azure App Service中删除了应用,则可以还原应用并继续使用现有内容和设置。 此过程使用已删除的 Web 应用的内容和设置覆盖另一个 目标 应用。
还原已删除的应用有几个条件:
- 已删除的应用必须在付费Azure App Service计划中创建。 不支持在免费层和共享层中创建的应用。
- 已删除的应用必须存在于系统中。 初始删除 30 天后,已删除的应用将从系统中清除。 清除应用后,无法还原它。
- 如果应用托管在App Service Environment中,然后从App Service Environment中删除,则仅当相应的App Service Environment仍然存在时,才能还原该应用。
- 无法还原在消耗计划或弹性高级计划上托管的函数应用。
本文介绍如何按照Azure门户或Azure PowerShell的过程还原已删除的 Web 应用。 还可以存储已删除Azure Functions应用。
先决条件
- 若要在 Azure 门户中完成还原,需要与已删除的应用类型相同的现有目标应用,并在同一区域中创建。
还原已删除的 Web 应用
您可以在 Azure 门户中使用 Azure App Service 或通过使用 Az PowerShell module 来恢复已删除的 Web 应用。
如果使用 PowerShell,可以还原到现有应用或创建新应用。
在Azure门户中,只能还原到现有的 Web 应用。
这两个选项都允许仅还原已删除的内容,或同时还原内容和配置设置。
还原过程不包括任何可能导入到已删除应用的自定义域、绑定或证书。 还原已删除的应用后,需要重新导入这些设置。
在 Azure 门户中,转到 App Services。
在顶部菜单栏中,选择“ 管理已删除的应用”。 此时会打开 “管理已删除的应用服务 ”窗格。
选择包含已删除应用的 订阅 。
使用 “已删除的应用服务 ”下拉列表并选择已删除的应用。
选择已删除的应用后,窗格将刷新以显示应用区域和类型。
使用 “替换应用服务 ”下拉列表,并选择现有应用以用作还原过程的目标。
默认情况下,仅还原应用内容。 如果还想要还原应用配置,请选中“ 还原应用配置 ”复选框。
选择 “恢复”。
运行以下命令以还原已删除的 Web 应用。
标识要还原的已删除应用
重新注册应用服务资源提供程序,确保系统可以检索已删除的应用列表:
Register-AzResourceProvider -ProviderNamespace "Microsoft.Web"
使用 Get-AzDeletedWebApp 以下命令检索已删除的应用列表:
Get-AzDeletedWebApp
输出显示每个已删除应用的详细信息:
-
已删除的网站 ID:应用的唯一标识符,用于删除具有相同名称的多个应用的情况。
-
订阅 ID:包含已删除资源的订阅。
-
位置:原始应用的位置。
-
资源组名称:原始资源组的名称。
-
名称:原始应用的名称。
- 插槽:插槽的名称,如生产。
-
删除时间:日期(mm/dd/yyyyy)和删除应用的时间。
查看列表并查找要还原的已删除 Web 应用。
若要查看特定已删除应用的详细信息,请使用应用名称和位置再次运行该命令。
将 <deleted-app-name> 和 <deleted-app-location> 值替换为已删除的应用信息。
Get-AzDeletedWebApp -Name <deleted-app-name> -Location <deleted-app-location>
还原已删除的 Web 应用
确定要还原的已删除应用后,请使用 Restore-AzDeletedWebApp 该命令。
该命令将已删除的 Web 应用还原到目标 Web 应用中。 此过程使用已删除的 Web 应用的内容和设置覆盖目标应用。
该命令需要各种参数来了解有关已删除的应用或目标应用的信息:
-
Name:已删除的应用或目标应用的名称,如命令指示。
-
ResourceGroupName:包含已删除应用的资源组的名称。
-
Slot:在目标应用中还原已删除应用的位置插槽。
-
TargetResourceGroupName:包含目标应用的资源组的名称。
-
TargetName:目标应用的名称。 如果希望命令创建新应用,请指定全局唯一的名称。
-
TargetAppServicePlanName:与目标应用关联的应用服务计划。
如果未指定目标参数,该命令将使用已删除的 Web 应用的资源组、名称和槽来设置目标值。
如果目标 Web 应用不存在,该命令将在指定的应用服务计划中创建新应用。
默认情况下,该命令将同时还原应用配置和任何内容。 若要仅还原内容,请使用 -RestoreContentOnly 标志。
以下部分提供了在不同方案中使用 Restore-AzDeletedWebApp 命令的示例。 将各种 <placeholder> 参数值替换为已删除的应用或目标应用的指示信息。
还原到原始应用名称
Restore-AzDeletedWebApp -TargetResourceGroupName <target-resource-group> -Name <deleted-app-name> -TargetAppServicePlanName <target-app-service-plan>
还原到其他应用名称
Restore-AzDeletedWebApp -ResourceGroupName <deleted-app-resource-group> -Name <deleted-app-name> -TargetResourceGroupName <target-resource-group> -TargetName <target-app-name> -TargetAppServicePlanName <target-app-service-plan>
将槽还原到目标应用
Restore-AzDeletedWebApp -TargetResourceGroupName <target-resource-group> -Name <target-app-name> -TargetAppServicePlanName <target-app-service-plan> -Slot <deleted-app-slot>
注意
部署槽位不会作为应用的一部分还原。 若要还原过渡槽,请使用 -Slot <slot-name> 标志。 该命令将原始槽位恢复到目标应用的生产槽位。
仅将网站内容还原到目标应用
Restore-AzDeletedWebApp -TargetResourceGroupName <target-resource-group> -Name <deleted-app-name> -TargetAppServicePlanName <target-app-service-plan> -RestoreContentOnly
当多个已删除的应用具有相同名称时还原(已删除的站点 ID)
如果多个已删除的应用具有相同的名称,可以通过为已删除的应用指定站点 ID 来还原特定应用。
该 Get-AzDeletedWebApp 命令返回应用版本的已删除站点 ID。 站点 ID 具有格式 /subscriptions/<deleted-app-subscription>/providers/Microsoft.Web/locations/<deleted-app-location>/deletedSites/<deleted-app-site-ID>。
若要还原特定应用,请指定已删除的网站 ID:
$deletedSite = Get-AzDeletedWebApp -ResourceGroupName <deleted-app-resource-group> -Name <deleted-app-name>
Restore-AzDeletedWebApp -TargetResourceGroupName <target-app-resource-group> -TargetName <target-app-name> -TargetAppServicePlanName <target-app-service-plan> -InputObject $deletedSite[0]
还原已删除Azure Functions应用
如果删除了托管在专用应用服务计划上的函数应用,则可以还原应用,只要它使用默认的应用服务存储。
在专用应用服务计划中还原应用
若要在新的 Dedicated 应用服务计划中还原函数应用,请按照过程使用 Restore-AzDeletedWebApp 命令,如当多个被删除的应用程序具有相同名称(已删除的站点 ID)时进行还原中所述。 有关详细信息,请参阅在 Azure 门户中创建函数应用。
在消耗计划或弹性 Premium 计划中恢复应用程序
如果已删除的函数应用托管在消耗计划或弹性高级计划中,则无法使用此命令 Restore-AzDeletedWebApp 。 不支持该操作,因为内容驻留在存储帐户中的Azure Files上。
如果无法硬删除Azure Files存储帐户,或者帐户存在且未删除文件共享,则可以使用解决方法。
执行以下步骤:
在消耗计划或高级计划中创建新的函数应用。 有关详细信息,请参阅在 Azure 门户中创建函数应用。
设置以下 应用设置 以引用旧存储帐户,其中包含上一个应用的内容。
| 应用设置 |
建议的值 |
AzureWebJobsStorage |
被删除的应用程序使用的存储账户的连接字符串。 |
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING |
被删除的应用程序使用的存储账户的连接字符串。 |
WEBSITE_CONTENTSHARE |
已删除应用的存储帐户上的文件共享。 |
相关内容