適用於:開發人員 |基本 |標準 |獎賞
透過 Azure APIM 來發佈及管理 API,您將能夠利用非 Azure APIM 使用者要另行手動設計、實作及管理的容錯和基礎結構功能。 Azure 平台可緩和絕大部分可能的失敗,且只需極少成本。
若要從影響您 APIM 服務的可用性問題復原,請隨時準備好在另一個區域中重新建構您的服務。 根據您的復原時間目標,建議您在一或多個區域中保留待命服務。 您也可以嘗試根據您的復原點目標,將其設定和內容保持與作用中的服務同步。 APIM 備份與還原功能可提供實作災害復原策略時必要的建置組塊。
備份和還原作業也可用於複寫作業環境之間的 APIM 服務設定,例如開發和暫存。 請注意,也會複製使用者和訂閱等執行階段資料,這不一定總是理想的做法。
本文說明如何使用外部儲存體帳戶,將 APIM 執行個體的備份與還原作業自動化。 此處顯示的步驟使用 Backup-AzApiManagement 和 Restore-AzApiManagement Azure PowerShell Cmdlet,或 API 管理服務 - 備份和 API 管理服務- 還原 REST API。
警告
每個備份會在 30 天後到期。 如果您在過了 30 天的到期時間後嘗試還原備份,還原會失敗並傳回 Cannot restore: backup expired
訊息。
重要事項
還原作業不會變更目標服務的自訂主機名稱設定。 我們建議針對作用中和待命服務使用相同的自訂主機名稱和 TLS 憑證,如此一來,在還原作業完成之後,就可以透過簡單的 DNS CNAME 變更,將流量重新導向至待命的執行個體。
備註
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱 安裝 Azure PowerShell。 若要瞭解如何移轉至 Az PowerShell 模組,請參閱 將 Azure PowerShell 從 AzureRM 遷移至 Az。
重要事項
API 管理服務基礎結構的變更(例如設定自定義網域、新增 CA 憑證、調整、虛擬網路設定、可用性區域變更和區域新增專案)可能需要 15 分鐘或更長的時間才能完成,視服務層級和部署大小而定。 預期具有較大縮放單位或多重區域設定的執行個體需要較長的時間。 系統會仔細執行 API 管理的輪流變更,以保留容量和可用性。
當服務正在更新時,無法進行其他服務基礎結構變更。 不過,您可以設定 API、產品、原則和用戶設定。 服務 不會 經歷閘道停機,API 管理 會繼續 服務 API 要求,而不會中斷(開發人員層除外)。
先決條件
支援的服務層級中的 API 管理服務實例。 如果您沒有 API 管理服務實例,請參閱建立 API 管理服務實例。
備註
目前,具有相關聯的工作區閘道的 API 管理實例不支援備份和還原。
一個 Azure 儲存體帳戶。 如果您沒有記憶體帳戶,請參閱 建立記憶體帳戶。
- 在記憶體帳戶中建立容器來保存備份數據。
如果您打算使用 Azure PowerShell Cmdlet,則為最新版本的 Azure PowerShell。 如果您尚未 安裝,請安裝 Azure PowerShell。
設定儲存體帳戶存取權
執行備份或還原作業時,您必須設定儲存體帳戶的存取權。 APIM 支援兩種儲存體存取機制:Azure 儲存體存取金鑰或 APIM 受控識別。
設定儲存體帳戶存取金鑰
Azure 會為每個儲存體帳戶產生兩個 512 位元儲存體帳戶存取金鑰。 您可以透過共用金鑰授權,使用這些金鑰來授與儲存體帳戶中資料的存取權。 若要檢視、擷取和管理金鑰,請參閱 管理記憶體帳戶存取密鑰。
設定 APIM 受控識別
備註
在備份和還原期間,針對儲存體作業使用 APIM 受控識別,在 APIM REST API 版本 2021-04-01-preview
或更新版本中受支援。
在您的 API 管理實例中, 為 API 管理 啟用系統指派或使用者指派的受控識別。
- 如果您啟用使用者指派的受控識別,請記下身分識別的 用戶端標識碼。
- 如果您要備份並還原至不同的 APIM 執行個體,請在來源和目標執行個體中啟用受控識別。
將儲存體 Blob 資料參與者角色身分識別指派給儲存體帳戶,以用於備份與還原。 若要指派角色,請使用 Azure 入口網站或 其他 Azure 工具。
備份 APIM 服務
使用 Azure PowerShell 登入。
在下列範例中:
- 名為 myapim 的 API 管理實例位於資源群組 apimresourcegroup 中。
- 名為 backupstorageaccount 的記憶體帳戶位於資源群組 storageresourcegroup 中。 記憶體帳戶具有名為 備份的容器。
- 將會建立名為 ContosoBackup.apimbackup 的備份 Blob。
在 PowerShell 中設定變數:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
使用儲存體存取金鑰進行存取
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName -TargetBlobName $blobName
使用受控識別進行存取
若要在 API 管理實例中設定受控識別以存取記憶體帳戶,請參閱本文稍早的 設定受控識別。
使用系統指派的受控識別進行存取
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName `
-TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
使用使用者指派的受控識別進行存取
在此範例中,名為 myidentity 的使用者指派受控識別位於資源群組 identityresourcegroup 中。
$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";
$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName `
-TargetBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid
備份作業的執行時間較長,因此可能需要數分鐘的時間才能完成。 在此期間,API 閘道會繼續處理要求,但服務的狀態是「正在更新」。
還原 APIM 服務
注意
避免在還原作業進行時針對服務組態 (例如 API、原則、開發人員入口網站外觀) 進行變更。 變更可能會遭到覆寫。
在下列範例中,
- 名為 myapim 的 API 管理實例會從記憶體帳戶 backupstorageaccount 中名為 ContosoBackup.apimbackup 的備份 Blob 還原。
- 備份 Blob 位於名為 backup的容器中。
在 PowerShell 中設定變數:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
使用儲存體存取金鑰進行存取
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName -SourceBlobName $blobName
使用受控識別進行存取
若要在 API 管理實例中設定受控識別以存取記憶體帳戶,請參閱本文稍早的 設定受控識別。
使用系統指派的受控識別進行存取
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName `
-SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
使用使用者指派的受控識別進行存取
在此範例中,名為 myidentity 的使用者指派受控識別位於資源群組 identityresourcegroup 中。
$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";
$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName `
-SourceBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid
條件約束
- 備份還原的保證僅限建立後的 30 天內。
- 進行備份時,請避免在服務中進行管理變更,例如定價層升級或降級、網域名稱變更等等。
- 服務組態的變更(例如 API、原則以及開發人員入口網站外觀)在備份作業進行過程中可能會被排除並遺失。
- 備份不會擷取 Azure 入口網站中的 [分析] 視窗上所顯示報表中使用的預先彙總記錄資料。
- 不應在記憶體帳戶中的 Blob 服務上啟用跨原始來源資源分享 (CORS)。
- 要還原之服務的定價層必須符合正在還原之備份服務的定價層。
儲存體網路條件約束
如果記憶體帳戶已啟用防火牆,建議您使用 API 管理實例的系統指派受控識別來存取帳戶。 確保儲存帳戶 授予存取權給受信任的 Azure 服務。
未備份的內容
- 用於建立分析報表的使用數據不會包含在備份中。 使用 Azure API 管理 REST API 定期擷取分析報告以進行保護。
- 自定義網域 TLS/SSL 憑證。
- 自訂 CA 憑證,其中包括客戶上傳的中繼證書或根證書。
- 虛擬網路 整合設定。
- 受控識別組態 。
- Azure 監視器診斷 設定。
- 通訊協定和加密 設定。
- 開發人員入口網站 內容。
執行服務備份的頻率會影響您的復原點目標。 為了儘可能縮小,建議您實作定期備份,並在針對 APIM 服務進行變更後執行隨選備份。
相關內容
請參閱下列相關資源,以了解備份/還原處理程序:
- 使用Logic Apps將 API 管理備份和還原自動化
- 如何跨區域移動 Azure API 管理
- API 管理 進階層 也支援 區域備援,可為特定 Azure 區域(位置)中的服務實例提供復原和高可用性。