Como implementar a recuperação após desastre através do serviço de cópia de segurança e restauro na Gestão de API do Azure

APLICA-SE A: Developer | Básico | Padrão | Prémio

Ao publicar e gerenciar suas APIs por meio do Gerenciamento de API do Azure, você está aproveitando a tolerância a falhas e os recursos de infraestrutura que, de outra forma, projetaria, implementaria e gerenciaria manualmente. A plataforma Azure atenua uma grande fração de falhas potenciais a uma fração do custo.

Para se recuperar de problemas de disponibilidade que afetam seu serviço de Gerenciamento de API, esteja pronto para reconstituir seu serviço em outra região a qualquer momento. Dependendo do seu objetivo de tempo de recuperação, convém manter um serviço em espera em uma ou mais regiões. Você também pode tentar manter sua configuração e conteúdo sincronizados com o serviço ativo de acordo com seu objetivo de ponto de recuperação. Os recursos de backup e restauração de gerenciamento de API fornecem os blocos de construção necessários para implementar a estratégia de recuperação de desastres.

As operações de backup e restauração também podem ser usadas para replicar a configuração do serviço de Gerenciamento de API entre ambientes operacionais, por exemplo, desenvolvimento e preparação. Tenha cuidado que os dados de tempo de execução, como usuários e assinaturas, também serão copiados, o que nem sempre pode ser desejável.

Este artigo mostra como automatizar as operações de backup e restauração de sua instância de Gerenciamento de API usando uma conta de armazenamento externo. As etapas mostradas aqui usam os cmdlets Backup-AzApiManagement e Restore-AzApiManagement do Azure PowerShell ou o Api Management Service - Backup and Api Management Service - Restore REST APIs.

Aviso

Cada cópia de segurança expira após 30 dias. Se você tentar restaurar um backup após o período de expiração de 30 dias ter expirado, a restauração falhará com uma Cannot restore: backup expired mensagem.

Importante

A operação de restauração não altera a configuração personalizada do nome do host do serviço de destino. Recomendamos usar o mesmo nome de host personalizado e certificado TLS para serviços ativos e em espera, para que, após a conclusão da operação de restauração, o tráfego possa ser redirecionado para a instância em espera por uma simples alteração CNAME DNS.

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

  • Uma instância de serviço de Gerenciamento de API. Se você não tiver uma, consulte Criar uma instância de serviço de Gerenciamento de API.

  • Uma conta de armazenamento do Azure. Se não tiver uma, consulte Criar uma conta de armazenamento.

  • A versão mais recente do Azure PowerShell, se você planeja usar cmdlets do Azure PowerShell. Se ainda não o fez, instale o Azure PowerShell.

Configurar o acesso à conta de armazenamento

Ao executar uma operação de backup ou restauração, você precisa configurar o acesso à conta de armazenamento. O Gerenciamento de API dá suporte a dois mecanismos de acesso ao armazenamento: uma chave de acesso do Armazenamento do Azure ou uma identidade gerenciada do Gerenciamento de API.

Configurar chave de acesso à conta de armazenamento

O Azure gera duas chaves de acesso de conta de armazenamento de 512 bits para cada conta de armazenamento. Essas chaves podem ser usadas para autorizar o acesso aos dados em sua conta de armazenamento por meio da autorização de Chave Compartilhada. Para visualizar, recuperar e gerenciar as chaves, consulte Gerenciar chaves de acesso da conta de armazenamento.

Configurar identidade gerenciada do Gerenciamento de API

Nota

O uso de uma identidade gerenciada pelo Gerenciamento de API para operações de armazenamento durante o backup e a restauração é suportado na versão 2021-04-01-preview da API REST de Gerenciamento de API ou posterior.

  1. Habilite uma identidade gerenciada atribuída pelo sistema ou pelo usuário para o Gerenciamento de API em sua instância de Gerenciamento de API.

    • Se você habilitar uma identidade gerenciada atribuída pelo usuário, anote a ID do Cliente da identidade.
    • Se você fizer backup e restaurar para diferentes instâncias de Gerenciamento de API, habilite uma identidade gerenciada nas instâncias de origem e de destino.
  2. Atribua a identidade à função de Colaborador de Dados de Blob de Armazenamento , com escopo para a conta de armazenamento usada para backup e restauração. Para atribuir a função, use o portal do Azure ou outras ferramentas do Azure.

Fazer backup de um serviço de Gerenciamento de API

Entre com o Azure PowerShell.

Nos seguintes exemplos:

  • Uma instância de Gerenciamento de API chamada myapim está no grupo de recursos apimresourcegroup.
  • Uma conta de armazenamento chamada backupstorageaccount está no grupo de recursos storageresourcegroup. A conta de armazenamento tem um contêiner chamado backups.
  • Um blob de backup será criado com o nome ContosoBackup.apimbackup.

Definir variáveis no PowerShell:

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

Acesso usando chave de acesso de armazenamento

$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

Acesso usando identidade gerenciada

Para configurar uma identidade gerenciada em sua instância de Gerenciamento de API para acessar a conta de armazenamento, consulte Configurar uma identidade gerenciada, anteriormente neste artigo.

Acesso usando identidade gerenciada atribuída ao sistema

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Acesso usando identidade gerenciada atribuída pelo usuário

Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está no grupo de recursos 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

O backup é uma operação de longa execução que pode levar vários minutos para ser concluída. Durante esse tempo, o gateway de API continua a lidar com solicitações, mas o estado do serviço é Atualizando.

Restaurar um serviço de Gerenciamento de API

Atenção

Evite alterações na configuração do serviço (por exemplo, APIs, políticas, aparência do portal do desenvolvedor) enquanto a operação de restauração estiver em andamento. As alterações podem ser substituídas.

Nos exemplos a seguir,

  • Uma instância de Gerenciamento de API chamada myapim é restaurada a partir do blob de backup chamado ContosoBackup.apimbackup na conta de armazenamento backupstorageaccount.
  • O blob de backup está em um contêiner chamado backups.

Definir variáveis no PowerShell:

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

Acesso usando chave de acesso de armazenamento

$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

Acesso usando identidade gerenciada

Para configurar uma identidade gerenciada em sua instância de Gerenciamento de API para acessar a conta de armazenamento, consulte Configurar uma identidade gerenciada, anteriormente neste artigo.

Acesso usando identidade gerenciada atribuída ao sistema

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Acesso usando identidade gerenciada atribuída pelo usuário

Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está no grupo de recursos 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

A restauração é uma operação de longa duração que pode levar até 45 minutos ou mais para ser concluída.

Restrições

  • A restauração de um backup é garantida apenas por 30 dias desde o momento de sua criação.
  • Enquanto o backup estiver em andamento, evite alterações de gerenciamento no serviço, como upgrade ou downgrade de nível de preço, alteração no nome de domínio e muito mais.
  • As alterações feitas na configuração do serviço (por exemplo, APIs, políticas e aparência do portal do desenvolvedor) enquanto a operação de backup está em processo podem ser excluídas do backup e serão perdidas.
  • O backup não captura dados de log pré-agregados usados em relatórios mostrados na janela do Google Analytics no portal do Azure.
  • O CORS (Cross-Origin Resource Sharing) não deve ser habilitado no serviço Blob na conta de armazenamento.
  • O nível de preço do serviço que está sendo restaurado deve corresponder ao nível de preço do serviço de backup que está sendo restaurado.

Restrições de rede de armazenamento

Se a conta de armazenamento estiver habilitada para firewall, é recomendável usar a identidade gerenciada atribuída pelo sistema da instância de Gerenciamento de API para acessar a conta. Certifique-se de que a conta de armazenamento conceda acesso a serviços confiáveis do Azure.

O que não é feito backup

A frequência com que você executa backups de serviço afeta seu objetivo de ponto de recuperação. Para minimizá-lo, recomendamos implementar backups regulares e executar backups sob demanda depois de fazer alterações no serviço de Gerenciamento de API.

Próximos passos

Confira os seguintes recursos relacionados para o processo de backup/restauração: