Comment implémenter une récupération d'urgence à l'aide d'une sauvegarde de service et la récupérer dans Gestion des API Azure

S’APPLIQUE À : Développeur | De base | Standard | Premium

En publiant et en gérant vos API via Gestion des API Azure, vous bénéficiez de fonctionnalités de tolérance de panne et d’infrastructure que vous n’avez plus à concevoir, implémenter ou gérer manuellement. La plateforme Azure permet de limiter une grande partie des risques de défaillance à moindres frais.

Pour effectuer une récupération à la suite de problèmes de disponibilité affectant votre service Gestion des API, préparez-vous à reconstituer votre service dans une autre région à tout moment. Selon votre objectif de délai de récupération, vous souhaiterez peut-être conserver un service en attente dans une ou plusieurs régions. Vous pouvez aussi essayer de synchroniser leur configuration et leur contenu avec le service actif en fonction de l’objectif de délai de récupération. Les capacités de sauvegarde et de restauration de Gestion des API fournissent les blocs de construction nécessaires pour l’implémentation d’une stratégie de récupération d’urgence.

Vous pouvez également recourir à des opérations de sauvegarde et restauration pour répliquer la configuration du service Gestion des API entre des environnements opérationnels (par exemple, développement et intermédiaire). Notez que les données de runtime telles que les informations utilisateur et les abonnements seront également copiées, ce qui n’est pas toujours souhaitable.

Cet article explique comment automatiser les opérations de sauvegarde et de restauration de votre instance Gestion des API à l’aide d’un compte de stockage externe. Les étapes indiquées ici utilisent les cmdlet Backup-AzApiManagement et Restore-AzApiManagement Azure PowerShell ou les API REST service APIM - Sauvegarde et service APIM - Restauration.

Avertissement

Chaque sauvegarde expire au bout de 30 jours. Si vous essayez de restaurer une sauvegarde après l’expiration de la période de 30 jours, la restauration échoue avec un message Cannot restore: backup expired.

Important

Une opération de restauration ne modifie pas la configuration du nom d’hôte du service cible. Nous vous recommandons d’utiliser les mêmes certificats TLS et nom d’hôte personnalisés pour les services actifs et en veille, afin que le trafic puisse être redirigé vers l’instance en veille via un simple changement de CNAME DNS une fois l’opération de restauration terminée.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Prérequis

Configurer l’accès du compte de stockage

Lorsque vous exécutez une opération de sauvegarde ou de restauration, vous devez configurer l’accès au compte de stockage. Gestion des API prend en charge deux mécanismes d’accès au stockage : une clé d’accès Stockage Azure ou une identité managée Gestion des API.

Configurer la clé d’accès du compte de stockage

Azure génère deux clés d’accès de stockage de compte à 512 bits pour chaque compte de stockage. Ces clés peuvent être utilisées pour autoriser l’accès aux données de votre compte de stockage par le biais de l’autorisation de clé partagée. Pour afficher, récupérer et gérer les clés, consultez Gérer les clés d’accès au compte de stockage.

Configurer l’identité managée Gestion des API

Notes

L’utilisation d’une identité managée Gestion des API pour les opérations de stockage pendant une sauvegarde ou une restauration est prise en charge dans la version 2021-04-01-preview ou une version ultérieure de l’API REST Gestion des API.

  1. Activez une identité managée affectée par le système ou par l’utilisateur pour Gestion des API dans votre instance Gestion des API.

    • Si vous activez une identité managée affectée par l’utilisateur, prenez note de l’ID client de l’identité.
    • Si vous devez sauvegarder et restaurer des instances Gestion des API différentes, activez une identité managée dans les instances source et cible.
  2. Attribuez à l’identité le rôle Contributeur aux données Blob du stockage, délimité par le compte de stockage utilisé pour la sauvegarde et la restauration. Pour attribuer le rôle, utilisez le portail Azure ou d’autres outils Azure.

Sauvegarde d’un service Gestion des API

Se connecter avec Azure PowerShell.

Dans les exemples suivants :

  • Une instance Gestion des API nommée myapim se trouve dans le groupe de ressources apimresourcegroup.
  • Un compte de stockage nommé backupstorageaccount se trouve dans le groupe de ressources storageresourcegroup. Le compte de stockage possède un conteneur nommé sauvegardes.
  • Un objet blob de sauvegarde est créé avec le nom ContosoBackup.apimbackup.

Définir des variables dans PowerShell :

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

Accès à l’aide de la clé d’accès de stockage

$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

Accès à l’aide de l’identité managée

Pour configurer une identité managée dans votre instance de Gestion des API afin d’accéder au compte de stockage, consultez Configurer une identité managée, plus haut dans cet article.

Accès à l’aide d’une identité managée affectée par le système

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

Accès à l’aide d’une identité managée affectée par l’utilisateur

Dans cet exemple, une identité managée affectée par l’utilisateur nommée myidentity se trouve dans le groupe de ressources 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

La sauvegarde est une opération de longue durée qui peut prendre plusieurs minutes. Pendant ce temps, la passerelle API continue à traiter les demandes, mais l’état du service est Mise à jour.

Restauration d’un service Gestion des API

Attention

Évitez de modifier la configuration de service (par exemple, API, stratégies, apparence du portail des développeurs) pendant qu’une opération de restauration est en cours. Les modifications peuvent être remplacées.

Dans les exemples suivants :

  • Une instance Gestion des API nommée myapim est restaurée à partir de l’objet blob de sauvegarde nommé ContosoBackup.apimbackup dans le compte de stockage backupstorageaccount.
  • L’objet blob de sauvegarde se trouve dans un conteneur nommé sauvegardes.

Définir des variables dans PowerShell :

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

Accès à l’aide de la clé d’accès de stockage

$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

Accès à l’aide de l’identité managée

Pour configurer une identité managée dans votre instance de Gestion des API afin d’accéder au compte de stockage, consultez Configurer une identité managée, plus haut dans cet article.

Accès à l’aide d’une identité managée affectée par le système

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

Accès à l’aide d’une identité managée affectée par l’utilisateur

Dans cet exemple, une identité managée affectée par l’utilisateur nommée myidentity se trouve dans le groupe de ressources 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

La restauration est une opération longue qui peut prendre 45 minutes, voire plus.

Contraintes

  • La restauration d’une sauvegarde n’est garantie que pendant 30 jours à partir du moment de sa création.
  • Pendant la sauvegarde, évitez toutes les modifications de gestion dans le service, comme augmenter ou baisser un niveau tarifaire, changer un nom de domaine, etc.
  • Les changements de configuration du service (par exemple, les API, les stratégies et l’apparence du portail des développeurs) pendant une opération de sauvegarde peuvent être exclus de la sauvegarde et être perdus.
  • La sauvegarde ne capture pas les données de journaux préagrégées qui sont utilisées dans les rapports affichés dans la fenêtre Analytics du portail Microsoft Azure.
  • Le partage des ressources Cross-Origin (CORS) ne doit pas être activé sur le service BLOB dans le compte de stockage.
  • Le niveau tarifaire du service à restaurer doit correspondre à celui du service sauvegardé utilisé pour la restauration.

Contraintes de mise en réseau du stockage

Si le compte de stockage est pare-feu activé, il est recommandé d’utiliser l’identité managée affectée par le système de l’instance Gestion des API pour l’accès au compte. Vérifiez que le compte de stockage accorde l’accès aux services Azure approuvés.

Éléments non sauvegardés

La fréquence à laquelle vous effectuez les sauvegardes du service affecte votre objectif de point de récupération. Pour la réduire, nous vous conseillons d’implémenter des sauvegardes régulières et d’effectuer des sauvegardes à la demande quand vous apportez des changements à votre service Gestion des API.

Étapes suivantes

Consultez les ressources connexes suivantes pour en savoir plus sur le processus de sauvegarde/restauration :