使用 PowerShell 還原已刪除的 App Service 應用程式

如果您意外刪除了 Azure App Service 中的應用程式,您可以使用 Az PowerShell 模組中的命令進行還原。

注意

  • 已刪除的應用程式會在初始刪除之後的 30 天內從系統中清除。 應用程式清除之後就無法復原。
  • 不支援裝載於使用量方案或 Elastic 進階方案上之函數應用程式的取消刪除功能。
  • App Service 環境中執行的 Apps Service 應用程式不支援快照集。 因此,App Service 環境中執行的 App Service 不支援取消刪除功能和複製功能。

重新註冊 App Service 資源提供者

某些客戶可能會遇到無法擷取已刪除應用程式清單的問題。 若要解決此問題,請執行下列命令:

 Register-AzResourceProvider -ProviderNamespace "Microsoft.Web"

列出刪除的應用程式

若要取得已刪除應用程式的集合,您可以使用 Get-AzDeletedWebApp

如需您可以使用之特定已刪除應用程式的詳細資料:

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

詳細資訊包括:

  • DeletedSiteId:應用程式的唯一識別碼,用於已刪除多個同名應用程式的案例
  • SubscriptionID:包含已刪除資源的訂用帳戶
  • Location:原始應用程式的位置
  • ResourceGroupName:原始資源群組的名稱
  • Name:原始應用程式的名稱。
  • Slot:位置的名稱。
  • Deletion Time:刪除應用程式的時間

還原已刪除的應用程式

注意

  • 不支援裝載於使用量方案或 Elastic 進階方案上之函數應用程式的Restore-AzDeletedWebApp
  • Restore-AzDeletedWebApp Cmdlet 會還原已刪除的 Web 應用程式。 TargetResourceGroupName、TargetName 和 TargetSlot 所指定的 Web 應用程式將會以已刪除 Web 應用程式的內容和設定來覆寫。 如果未指定目標參數,系統將自動填入已刪除 Web 應用程式的資源群組、名稱和位置。 如果目標 Web 應用程式不存在,其將在 TargetAppServicePlanName 指定的 App Service 方案中自動建立。
  • Restore-AzDeletedWebApp 預設會還原應用程式設定及任何內容。 如果您只想還原內容,請使用 -RestoreContentOnly 旗標搭配這個 commandlet。
  • 您匯入至應用程式的自訂網域、繫結或憑證將不會還原。 還原應用程式之後,您必須重新新增它們。

識別您想要還原的應用程式之後,可以使用 Restore-AzDeletedWebApp 來進行還原,如下列範例所示。

您可以在這裡找到完整的 Commandlet 參考: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 預設會將您的應用程式設定及任何內容還原至目標應用程式。 如果您只想還原內容,請使用 -RestoreContentOnly 旗標搭配這個 commandlet。

僅將網站內容還原至目標應用程式

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>

命令的輸入如下:

  • Target Resource Group:應用程式要在其中還原的目標資源群組
  • TargetName:要將已刪除的應用程式還原至其中的目標應用程式
  • TargetAppServicePlanName:連結至應用程式的 App Service 方案
  • Name:應用程式的名稱,必須是全域唯一的。
  • ResourceGroupName:已刪除應用程式的原始資源群組
  • Slot:已刪除應用程式的位置
  • RestoreContentOnly:根據預設 Restore-AzDeletedWebApp 會還原您的應用程式設定以及任何內容。 如果您只想還原內容,則可使用 -RestoreContentOnly 旗標搭配這個 Commandlet。

注意

如果應用程式裝載於 App Service 環境,然後刪除,則只有在對應的 App Service 環境仍存在時,才能還原應用程式。

還原已刪除的函數應用程式

如果函數應用程式裝載於專用應用程式服務方案,則只要它是使用預設 App Service 儲存體,即可還原。

  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"

目前不支援裝載於使用量方案或 Elastic 進階方案的取消刪除 (Restore-AzDeletedWebApp) 函數應用程式,因為內容是位於儲存體帳戶中的 Azure 檔案儲存體上。 如果您尚未「實」刪除該 Azure 檔案儲存體帳戶,或如果帳戶存在且檔案共用尚未刪除,則可以使用該步驟作為因應措施:

  1. 在使用量或進階方案中建立新的函數應用程式。 請參閱如何在入口網站中建立應用程式的指示。

  2. 設定下列應用程式設定以參照舊儲存體帳戶,其中會包含先前應用程式的內容。

    應用程式設定 建議的值
    AzureWebJobsStorage 已刪除應用程式使用之儲存體帳戶的連接字串。
    WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 已刪除應用程式使用之儲存體帳戶的連接字串。
    WEBSITE_CONTENTSHARE 已刪除應用程式使用之儲存體帳戶的檔案共用。