Come implementare il ripristino di emergenza usando il backup e il ripristino dei servizi in Gestione API di AzureHow to implement disaster recovery using service backup and restore in Azure API Management

Scegliendo di pubblicare e gestire le API tramite Gestione API di Azure è possibile sfruttare molte funzionalità di tolleranza di errore e di infrastruttura che sarebbe altrimenti necessario progettare, implementare e gestire.By choosing to publish and manage your APIs via Azure API Management you are taking advantage of many fault tolerance and infrastructure capabilities that you would otherwise have to design, implement, and manage. La piattaforma di Azure permette di mitigare una vasta gamma di potenziali errori a un costo nettamente inferiore.The Azure platform mitigates a large fraction of potential failures at a fraction of the cost.

Per risolvere i problemi di disponibilità che colpiscono l'area in cui è ospitato il servizio Gestione API, è necessario essere pronti a ripristinare il servizio in un'area diversa in qualsiasi momento.To recover from availability problems affecting the region where your API Management service is hosted, you should be ready to reconstitute your service in a different region at any time. In base ai propri obiettivi in termini di disponibilità e tempi di ripristino, è consigliabile riservare un servizio di backup in una o più aree e provare a mantenere sincronizzati la configurazione e il contenuto con il servizio attivo.Depending on your availability goals and recovery time objective, you might want to reserve a backup service in one or more regions and try to maintain their configuration and content in sync with the active service. La funzionalità di backup e ripristino dei servizi fornisce il blocco predefinito necessario per implementare la propria strategia di ripristino di emergenza.The service "backup and restore" feature provides the necessary building block for implementing your disaster recovery strategy.

Questa guida descrive come autenticare le richieste di Azure Resource Manager e come eseguire il backup e il ripristino delle istanze del servizio Gestione API.This guide shows how to authenticate Azure Resource Manager requests, and how to back up and restore your API Management service instances.

Nota

Il processo di backup e ripristino di un'istanza del servizio Gestione API per il ripristino di emergenza può essere usato anche per la replica delle istanze del servizio Gestione API per scenari quali la gestione temporanea.The process for backing up and restoring an API Management service instance for disaster recovery can also be used for replicating API Management service instances for scenarios such as staging.

Ogni backup scade dopo 30 giorni.Each backup expires after 30 days. Se si tenta di ripristinare un backup dopo la scadenza del periodo di 30 giorni, il ripristino avrà esito negativo e verrà visualizzato il messaggio Cannot restore: backup expired.If you attempt to restore a backup after the 30-day expiration period has expired, the restore will fail with a Cannot restore: backup expired message.

Autenticazione delle richieste di Gestione risorse di AzureAuthenticating Azure Resource Manager requests

Importante

L'API REST per il backup e ripristino usa Gestione risorse di Azure e include un meccanismo di autenticazione diverso rispetto alle API REST per la gestione delle entità di Gestione API.The REST API for backup and restore uses Azure Resource Manager and has a different authentication mechanism than the REST APIs for managing your API Management entities. I passaggi descritti in questa sezione descrivono come autenticare le richieste di Gestione risorse di Azure.The steps in this section describe how to authenticate Azure Resource Manager requests. Per altre informazioni, vedere Autenticazione delle richieste di Gestione risorse di Azure.For more information, see Authenticating Azure Resource Manager requests.

Tutte le attività che è possibile eseguire sulle risorse tramite Azure Resource Manager devono essere autenticate con Azure Active Directory usando la procedura seguente:All of the tasks that you do on resources using the Azure Resource Manager must be authenticated with Azure Active Directory using the following steps:

  • Aggiungere un'applicazione al tenant di Azure Active Directory.Add an application to the Azure Active Directory tenant.
  • Impostare le autorizzazioni per l'applicazione aggiunta.Set permissions for the application that you added.
  • Ottenere il token per autenticare le richieste a Gestione risorse di Azure.Get the token for authenticating requests to Azure Resource Manager.

Creare un'applicazione Azure Active DirectoryCreate an Azure Active Directory application

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Usando la sottoscrizione che contiene l'istanza del servizio Gestione API passare alla scheda Registrazioni per l'app.Using the subscription that contains your API Management service instance, navigate to the App registrations tab.

    Nota

    Se la directory predefinita di Azure Active Directory non è visibile nel proprio account, contattare l'amministratore della sottoscrizione di Azure perché conceda le autorizzazioni necessarie per l'account.If the Azure Active Directory default directory is not visible to your account, contact the administrator of the Azure subscription to grant the required permissions to your account.

  3. Fare clic su Registrazione nuova applicazione.Click New application registration.

    Su lato destro verrà visualizzata la finestra Crea.The Create window appears on the right. Immettere le informazioni rilevanti per l'app AAD in questa finestra.That is where you enter the AAD app relevant information.

  4. Immettere un nome per l'applicazione.Enter a name for the application.
  5. Come tipo di applicazione selezionare Nativo.For the application type, select Native.
  6. Immettere un URL di segnaposto, ad esempio http://resources per URI di reindirizzamento, che è un campo obbligatorio, ma il valore non viene usato in seguito.Enter a placeholder URL such as http://resources for the Redirect URI, as it is a required field, but the value is not used later. Selezionare la casella di controllo per salvare l'applicazione.Click the check box to save the application.
  7. Fare clic su Crea.Click Create.

Aggiungere un'applicazioneAdd an application

  1. Dopo aver creato l'applicazione, fare clic su Impostazioni.Once the application is created, click Settings.
  2. Fare clic su Autorizzazioni necessarie.Click Required permissions.
  3. Fare clic su +Aggiungi.Click +Add.
  4. Fare clic su Selezionare un'API.Press Select an API.
  5. Scegliere API Gestione dei servizi di Windows Azure.Choose Windows Azure Service Management API.
  6. Fare clic su Seleziona.Press Select.

    Aggiungere autorizzazioni

  7. Fare clic su Autorizzazioni delegate accanto all'applicazione appena aggiunta, selezionare la casella per Accesso a Gestione dei servizi di Azure (anteprima).Click Delegated Permissions beside the newly added application, check the box for Access Azure Service Management (preview).

  8. Fare clic su Seleziona.Press Select.

Configurazione dell'appConfiguring your app

Prima di richiamare le API che generano il backup e ripristino, è necessario ottenere un token.Prior to invoking the APIs that generate the backup and restore it, it is necessary to get a token. L'esempio seguente usa il pacchetto NuGet Microsoft.IdentityModel.Clients.ActiveDirectory per recuperare il token.The following example uses the Microsoft.IdentityModel.Clients.ActiveDirectory NuGet package to retrieve the token.

using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;

namespace GetTokenResourceManagerRequests
{
    class Program
    {
        static void Main(string[] args)
        {
            var authenticationContext = new AuthenticationContext("https://login.microsoftonline.com/{tenant id}");
            var result = authenticationContext.AcquireToken("https://management.azure.com/", {application id}, new Uri({redirect uri});

            if (result == null) {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }

            Console.WriteLine(result.AccessToken);

            Console.ReadLine();
        }
    }
}

Sostituire {tentand id}, {application id} e {redirect uri} usando le istruzioni seguenti:Replace {tentand id}, {application id}, and {redirect uri} using the following instructions:

  1. Sostituire {tenant id} con l'ID tenant dell'applicazione Azure Active Directory creata.Replace {tenant id} with the tenant id of the Azure Active Directory application you created. È possibile accedere all'ID facendo clic su Registrazioni per l'app -> Endpoint.You can access the id by clicking App registrations -> Endpoints.

    Endpoint

  2. Sostituire {application id} con il valore visualizzato passando alla pagina Impostazioni.Replace {application id} with the value you get by navigating to the Settings page.
  3. Sostituire l'URL dalla scheda URI di reindirizzamento nell'applicazione Azure Active Directory.Replace the URL from the Redirect URIs tab is your Azure Active Directory application.

    Dopo avere specificato i valori, l'esempio di codice dovrebbe restituire un token simile all'esempio seguente:Once the values are specified, the code example should return a token similar to the following example:

    token

Chiamata delle operazioni di backup e ripristinoCalling the backup and restore operations

Prima di chiamare le operazioni di backup e ripristino descritte nelle sezioni seguenti, impostare l'intestazione della richiesta di autorizzazione per la chiamata REST.Before calling the "backup and restore" operations described in the following sections, set the authorization request header for your REST call.

request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);

Backup di un servizio di Gestione API Back up an API Management service

Per eseguire il backup di un servizio di gestione API, emettere la seguente richiesta HTTP:To back up an API Management service issue the following HTTP request:

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backup?api-version={api-version}

dove:where:

  • subscriptionId: ID della sottoscrizione contenente il servizio Gestione API di cui si sta tentando di eseguire il backup.subscriptionId - id of the subscription containing the API Management service you are attempting to back up
  • resourceGroupName: una stringa nel formato "Api-Default-{service-region}", dove service-region identifica l'area di Azure in cui è ospitato il servizio Gestione API di cui si sta tentando di eseguire il backup, ad esempio North-Central-US.resourceGroupName - a string in the form of 'Api-Default-{service-region}' where service-region identifies the Azure region where the API Management service you are trying to backup is hosted, for example, North-Central-US
  • serviceName : il nome del servizio di Gestione API di cui sta eseguendo il backup specificato quando è stato creato.serviceName - the name of the API Management service you are making a backup of specified at the time of its creation
  • api-version - sostituire con 2014-02-14api-version - replace with 2014-02-14

Nel corpo della richiesta, specificare il nome dell'account di archiviazione, la chiave di accesso, il nome del contenitore BLOB e il nome del backup di destinazione di Azure:In the body of the request, specify the target Azure storage account name, access key, blob container name, and backup name:

'{  
    storageAccount : {storage account name for the backup},  
    accessKey : {access key for the account},  
    containerName : {backup container name},  
    backupName : {backup blob name}  
}'

Impostare il valore dell'intestazione della richiesta Content-Type su application/json.Set the value of the Content-Type request header to application/json.

Il backup è un'operazione a lunga esecuzione che potrebbe richiedere diversi minuti per essere completata.Backup is a long running operation that may take multiple minutes to complete. Se la richiesta viene eseguita correttamente e il processo di backup viene avviato, si riceverà un codice di stato risposta 202 Accepted con un'intestazione Location.If the request was successful and the backup process was initiated, you receive a 202 Accepted response status code with a Location header. Effettuare richieste "GET" all'URL nell'intestazione Location per conoscere lo stato dell'operazione.Make 'GET' requests to the URL in the Location header to find out the status of the operation. Durante l'esecuzione del backup si continuerà a ricevere il codice di stato "202 - Accettato".While the backup is in progress, you continue to receive a '202 Accepted' status code. Il codice risposta 200 OK indicherà il completamento dell'operazione di backup.A Response code of 200 OK indicates successful completion of the backup operation.

Quando si crea una richiesta di backup, occorre attenersi ai vincoli seguenti.Note the following constraints when making a backup request.

  • Il contenitore specificato nel corpo della richiesta deve esistere.Container specified in the request body must exist.
  • Mentre il backup è in corso, non tentare di eseguire alcuna operazione di gestione dei servizi , ad esempio l'aggiornamento o il downgrade di SKU, la modifica di nomi di dominio e così via.While backup is in progress you should not attempt any service management operations such as SKU upgrade or downgrade, domain name change, etc.
  • Il ripristino di un backup è garantito solo per 30 giorni dal momento della sua creazione.Restore of a backup is guaranteed only for 30 days since the moment of its creation.
  • I dati di utilizzo usati per creare report analitici non sono inclusi nel backup.Usage data used for creating analytics reports is not included in the backup. Usare l'API REST di Gestione API di Azure per recuperare periodicamente i report analitici e custodirli al sicuro.Use Azure API Management REST API to periodically retrieve analytics reports for safekeeping.
  • La frequenza con cui si eseguono i backup dei servizi influenzerà i propri obiettivi relativi ai punti di ripristino.The frequency with which you perform service backups affect your recovery point objective. Per ridurla al minimo, si consiglia di implementare backup regolari e di eseguire backup su richiesta dopo aver apportato modifiche importanti al servizio Gestione API.To minimize it, the recommendation is implementing regular backups as well as performing on-demand backups after making important changes to your API Management service.
  • Le modifiche apportate alla configurazione del servizio (ad esempio alle API, ai criteri, all'aspetto del portale per sviluppatori) durante l'esecuzione del processo di backup potrebbero non essere incluse nel backup e potrebbero quindi andare perse.Changes made to the service configuration (for example, APIs, policies, developer portal appearance) while backup operation is in process might not be included in the backup and therefore will be lost.

Ripristino di un servizio di Gestione API Restore an API Management service

Per ripristinare un servizio di Gestione API da un backup creato in precedenza, creare la seguente richiesta HTTP:To restore an API Management service from a previously created backup make the following HTTP request:

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/restore?api-version={api-version}

dove:where:

  • subscriptionId : ID della sottoscrizione contenente il servizio di Gestione API in cui si sta ripristinando un backup.subscriptionId - id of the subscription containing the API Management service you are restoring a backup into
  • resourceGroupName: una stringa nel formato "Api-Default-{service-region}", dove service-region identifica l'area di Azure in cui è ospitato il servizio Gestione API in cui si sta ripristinando un backup, ad esempio North-Central-US.resourceGroupName - a string in the form of 'Api-Default-{service-region}' where service-region identifies the Azure region where the API Management service you are restoring a backup into is hosted, for example, North-Central-US
  • serviceName : il nome del servizio di Gestione API in cui si sta effettuando il ripristino specificato quando è stato creato.serviceName - the name of the API Management service being restored into specified at the time of its creation
  • api-version - sostituire con 2014-02-14api-version - replace with 2014-02-14

Nel corpo della richiesta specificare la posizione del file di backup, ad esempio il nome dell'account di archiviazione, la chiave di accesso, il nome del contenitore BLOB e il nome del backup di Azure:In the body of the request, specify the backup file location, that is, Azure storage account name, access key, blob container name, and backup name:

'{  
    storageAccount : {storage account name for the backup},  
    accessKey : {access key for the account},  
    containerName : {backup container name},  
    backupName : {backup blob name}  
}'

Impostare il valore dell'intestazione della richiesta Content-Type su application/json.Set the value of the Content-Type request header to application/json.

Il ripristino è un'operazione a lunga esecuzione che potrebbe richiedere 30 minuti o più per essere completata.Restore is a long running operation that may take up to 30 or more minutes to complete. Se la richiesta viene eseguita correttamente e il processo di ripristino viene avviato, si riceverà un codice di stato risposta 202 Accepted con un'intestazione Location.If the request was successful and the restore process was initiated, you receive a 202 Accepted response status code with a Location header. Effettuare richieste "GET" all'URL nell'intestazione Location per conoscere lo stato dell'operazione.Make 'GET' requests to the URL in the Location header to find out the status of the operation. Durante l'esecuzione del ripristino si continuerà a ricevere il codice di stato "202 - Accettato".While the restore is in progress, you continue to receive '202 Accepted' status code. Il codice risposta 200 OK indicherà il completamento dell'operazione di ripristino.A response code of 200 OK indicates successful completion of the restore operation.

Importante

Lo SKU del servizio in cui si effettua il ripristino deve corrispondere allo SKU del servizio sottoposto a backup da ripristinare.The SKU of the service being restored into must match the SKU of the backed-up service being restored.

Le modifiche apportate alla configurazione del servizio (ad esempio alle API, ai criteri, all'aspetto del portale per sviluppatori) durante l'operazione di ripristino potrebbero essere sovrascritte.Changes made to the service configuration (for example, APIs, policies, developer portal appearance) while restore operation is in progress could be overwritten.

Passaggi successiviNext steps

Consultare i blog Microsoft seguenti per due diverse procedure dettagliate del processo di backup e ripristino.Check out the following Microsoft blogs for two different walkthroughs of the backup/restore process.