Generazione di risposte personalizzate agli errori - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Generazione di risposte personalizzate agli errori

Se un oggetto tramite il quale stai servendo non CloudFront è disponibile per qualche motivo, il tuo server web in genere restituisce un codice di stato HTTP pertinente CloudFront per indicarlo. Ad esempio, se un visualizzatore richiede un URL non valido, il server Web restituisce un codice di stato HTTP 404 (Not Found) a CloudFront e lo CloudFront restituisce al visualizzatore.

Se lo desideri, puoi invece CloudFront configurare la restituzione di una risposta di errore personalizzata al visualizzatore. Hai anche diverse opzioni per gestire la CloudFront risposta in caso di errore. Per specificare le opzioni per i messaggi di errore personalizzati, aggiorna la CloudFront distribuzione per specificare tali valori. Per ulteriori informazioni, consulta Configurazione del comportamento di risposta in caso di errore.

Se configurate CloudFront per restituire una pagina di errore personalizzata per un codice di stato HTTP ma la pagina di errore personalizzata non è disponibile, CloudFront restituisce al visualizzatore il codice di stato CloudFront ricevuto dall'origine che contiene le pagine di errore personalizzate. Ad esempio, supponiamo che l'origine personalizzata restituisca un codice di stato 500 e che tu abbia configurato CloudFront per ottenere una pagina di errore personalizzata per un codice di stato 500 da un bucket Amazon S3. Tuttavia, qualcuno ha eliminato accidentalmente la pagina di errore personalizzata dal tuo bucket. CloudFront restituisce un codice di stato HTTP 404 (Not Found) al visualizzatore che ha richiesto l'oggetto.

Quando CloudFront restituisci una pagina di errore personalizzata a un visualizzatore, paghi i CloudFront costi standard per la pagina di errore personalizzata, non i costi per l'oggetto richiesto. Per ulteriori informazioni sugli CloudFront addebiti, consulta la pagina CloudFrontdei prezzi di Amazon.

Configurazione del comportamento di risposta in caso di errore

Per configurare risposte di errore personalizzate, puoi utilizzare la CloudFront console, l' CloudFront API o AWS CloudFormation. Indipendentemente dal modo in cui decidi di aggiornare la configurazione, prendi in considerazione i seguenti suggerimenti e consigli:

Configura risposte di errore personalizzate (console) CloudFront

Per configurare risposte di errore personalizzate nella CloudFront console, è necessario disporre di una CloudFront distribuzione. Nella console, le impostazioni di configurazione per le risposte personalizzate agli errori sono disponibili solo per le distribuzioni esistenti. Per informazioni su come creare una distribuzione, consulta Iniziare con una distribuzione di base CloudFront.

Per configurare le risposte personalizzate agli errori (console)
  1. Accedi AWS Management Console e apri la pagina Distribuzioni nella CloudFront console all'indirizzohttps://console.aws.amazon.com/cloudfront/v4/home#distributions.

  2. Nell'elenco delle distribuzioni, scegli la distribuzione da aggiornare.

  3. Seleziona la scheda Pagine errori , quindi Crea risposta personalizzata all'errore.

  4. Immetti i valori applicabili. Per ulteriori informazioni, consulta Custom Error Pages and Error Caching (Pagine di errore personalizzate e caching errori).

  5. Dopo aver immesso i valori desiderati, seleziona Crea.

Configura risposte di errore personalizzate (CloudFrontAPI o AWS CloudFormation)

Per configurare risposte di errore personalizzate con l' CloudFront API oppure AWS CloudFormation, utilizza il CustomErrorResponse tipo in una distribuzione. Per ulteriori informazioni, consulta gli argomenti seguenti:

Creazione di una pagina personalizzata di errore per codici di stato HTTP specifici

Se preferisci visualizzare un messaggio di errore personalizzato anziché quello predefinito, ad esempio una pagina che utilizza la stessa formattazione del resto del sito Web, puoi CloudFront restituire al visualizzatore un oggetto (come un file HTML) che contiene il tuo messaggio di errore personalizzato.

Per specificare il file che desideri restituire e gli errori per i quali il file deve essere restituito, aggiorni la distribuzione per specificare tali valori. CloudFront Per ulteriori informazioni, consulta Configurazione del comportamento di risposta in caso di errore.

Di seguito è riportata una pagina di errore personalizzata di esempio:

Schermata di un esempio di pagina AWS 404 personalizzata.

Puoi specificare un oggetto differente per ciascun codice di stato HTTP supportato, oppure puoi utilizzare lo stesso oggetto per tutti i codici di stato supportati. Puoi decidere di specificare pagine di errore personalizzate per alcuni codici di stato e non per altri.

Gli oggetti tramite i quali stai servendo CloudFront possono non essere disponibili per una serie di motivi. Tali opzioni rientrano in due categorie generali:

  • Gli errori del client indicano un problema con la richiesta. Ad esempio, l'oggetto con il nome specificato non è disponibile oppure l'utente non possiede le autorizzazioni necessarie per ottenere un oggetto nel bucket Amazon S3. Quando si verifica un errore del client, l'origine restituisce un codice di stato HTTP nell'intervallo 4xx aCloudFront.

  • Gli errori del server indicano un problema con il server di origine. Ad esempio, il server HTTP è occupato o non disponibile. Quando si verifica un errore del server, il server di origine restituisce un codice di stato HTTP nell'intervallo 5xx o CloudFront non riceve una risposta dal server di origine per un certo periodo di tempo e presuppone un codice di stato 504 (Gateway Timeout). CloudFront

I codici di stato HTTP per i quali è CloudFront possibile restituire una pagina di errore personalizzata includono i seguenti:

  • 400, 403, 404, 405, 414, 416

    Note
    • Se CloudFront rileva che la richiesta potrebbe non essere sicura, CloudFront restituisce un errore 400 (Bad Request) anziché una pagina di errore personalizzata.

    • Puoi creare una pagina di errore personalizzata per il codice di stato HTTP 416 (Requested Range Not Satisfiable) e modificare il codice di stato HTTP che CloudFront restituisce agli utenti quando l'origine restituisce un codice di stato 416 a. CloudFront Per ulteriori informazioni, consulta Modifica dei codici di risposta restituiti da CloudFront. Tuttavia, CloudFront non memorizza nella cache le risposte del codice di stato 416, quindi anche se specifichi un valore per Error Caching Minimum TTL per il codice di stato 416, non lo utilizza. CloudFront

  • 500, 501, 502, 503, 504

    Nota

    In alcuni casi, CloudFront non restituisce una pagina di errore personalizzata per il codice di stato HTTP 503 anche se si configura in tal senso. CloudFront Se il codice CloudFront di errore è Capacity Exceeded oLimit Exceeded, CloudFront restituisce un codice di stato 503 al visualizzatore senza utilizzare la pagina di errore personalizzata.

Per una spiegazione dettagliata di come vengono CloudFront gestite le risposte di errore provenienti dall'origine, consultaIn che modo CloudFront elabora e memorizza nella cache i codici di stato HTTP 4xx e 5xx dalla tua origine.

Archiviazione degli oggetti e delle pagine personalizzate di errore in diverse sedi

Se desideri archiviare gli oggetti e le pagine di errore personalizzate in posizioni differenti, la tua distribuzione deve includere un comportamento cache per il quale le seguenti condizioni sono vere:

  • Il valore di Path Pattern (Modello di percorso) corrisponde al percorso dei tuoi messaggi di errore personalizzati. Ad esempio, hai salvato pagine di errore personalizzate per errori 4xx in un bucket Amazon S3 in una directory denominata /4xx-errors. La tua distribuzione deve includere un comportamento cache per il quale il modello di percorso instrada le richieste per le pagine di errore personalizzate a quella posizione, ad esempi, /4xx-errors/*.

  • Il valore di Origin (Origine) specifica il valore di Origin ID (ID origine) per l'origine che contiene le tue pagine di errore personalizzate.

Per ulteriori informazioni, consulta Cache Behavior Settings (Impostazioni del comportamento della cache).

Modifica dei codici di risposta restituiti da CloudFront

È possibile configurare CloudFront la restituzione al visualizzatore di un codice di stato HTTP diverso da quello CloudFront ricevuto dall'origine. Ad esempio, se la tua origine restituisce un codice di stato 500 a CloudFront, potresti CloudFront voler restituire una pagina di errore personalizzata e un codice di stato 200 (OK) al visualizzatore. Esistono diversi motivi per cui potresti voler restituire CloudFront al visualizzatore un codice di stato diverso da quello a cui è stato restituito l'origine CloudFront:

  • Alcuni dispositivi Internet (ad esempio, alcuni firewall e proxy aziendali) intercettano i codici HTTP 4xx e 5xx e impediscono la restituzione della risposta al visualizzatore. In questo scenario, se si sostituisce 200, la risposta non viene intercettata.

  • Se non vi interessa distinguere tra diversi errori del client o del server, potete specificare 400 o 500 come valore CloudFront restituito per tutti i codici di stato 4xx o 5xx.

  • Potresti scegliere di restituire un codice di stato 200 (OK) e un sito Web statico, in modo che i tuoi clienti non sappiano che il sito Web è inaccessibile.

Se abiliti i log CloudFront standard e configuri CloudFront per modificare il codice di stato HTTP nella risposta, il valore della sc-status colonna nei log contiene il codice di stato specificato. Tuttavia, il valore della colonna x-edge-result-type non ne è interessato. Contiene il tipo di risultato della risposta dall'origine. Ad esempio, supponete di configurare CloudFront la restituzione di un codice di stato 200 al visualizzatore quando l'origine restituisce 404 (Not Found) a. CloudFront Quando l'origine risponde a una richiesta con un codice di stato 404, il valore nella colonna sc-status nel log sarà 200, ma il valore nella colonna x-edge-result-type sarà Error.

È possibile CloudFront configurare la restituzione di uno dei seguenti codici di stato HTTP insieme a una pagina di errore personalizzata:

  • 200

  • 400, 403, 404, 405, 414, 416

  • 500, 501, 502, 503, 504

Controllo della durata della memorizzazione CloudFront nella cache degli errori

CloudFront memorizza nella cache le risposte agli errori per una durata predefinita di 10 secondi. CloudFront invia quindi la richiesta successiva per l'oggetto all'origine per verificare se il problema che ha causato l'errore è stato risolto e l'oggetto richiesto è disponibile.

È possibile specificare la durata della memorizzazione nella cache degli errori, ovvero l'Error Caching Minimum TTL, per ogni codice di stato 4xx e 5xx inserito nella cache. CloudFront Per ulteriori informazioni, consulta Codici di stato HTTP 4xx e 5xx memorizzati nella cache CloudFront. Quando specifichi una durata, è importante prestare attenzione alle seguenti informazioni:

  • Se specifichi una durata di memorizzazione nella cache degli errori breve, inoltra più richieste all'origine rispetto a quando specifichi una durata più lunga. CloudFront Per gli errori 5xx, questo potrebbe aggravare il problema che ha causato inizialmente l'errore del server di origine.

  • Quando l'origine restituisce un errore per un oggetto, CloudFront risponde alle richieste relative all'oggetto con la risposta all'errore o con la pagina di errore personalizzata fino allo scadere del periodo di memorizzazione nella cache degli errori. Se specificate una lunga durata di memorizzazione nella cache degli errori, CloudFront potreste continuare a rispondere alle richieste con una risposta di errore o con la pagina di errore personalizzata per un lungo periodo dopo che l'oggetto sarà nuovamente disponibile.

Nota

È possibile creare una pagina di errore personalizzata per il codice di stato HTTP 416 (Requested Range Not Satisfiable) e modificare il codice di stato HTTP che CloudFront restituisce agli utenti quando l'origine restituisce un codice di stato 416 a. CloudFront Per ulteriori informazioni, consulta Modifica dei codici di risposta restituiti da CloudFront. Tuttavia, CloudFront non memorizza nella cache le risposte del codice di stato 416, quindi anche se specifichi un valore per Error Caching Minimum TTL per il codice di stato 416, non lo utilizza. CloudFront

Se desideri controllare per quanto tempo CloudFront memorizza nella cache gli errori per i singoli oggetti, puoi configurare il tuo server di origine per aggiungere l'intestazione applicabile alla risposta di errore per quell'oggetto.

Se l'origine aggiunge una Cache-Control: s-maxage direttiva Cache-Control: max-age or o un'Expiresintestazione, CloudFront memorizza nella cache le risposte di errore per il valore maggiore tra il valore nell'intestazione o il TTL minimo di Error Caching.

Nota

I valori Cache-Control: max-age e Cache-Control: s-maxage non possono essere maggiori del valore Maximum TTL (TTL massimo) impostato per il comportamento cache per il quale la pagina di errore viene recuperata.

Se l'origine aggiunge altre Cache-Control direttive o non aggiunge alcuna intestazione, memorizza nella cache le risposte di errore per il valore di Error CloudFront Caching Minimum TTL.

Se il periodo di scadenza per un codice di stato 4xx o 5xx per un oggetto è più lungo rispetto a quello che desideri attendere, puoi invalidare il codice di errore memorizzato nella cache utilizzando l'URL dell'oggetto richiesto. Se il server di origine restituisce un messaggio di errore per più oggetti, devi invalidare ogni oggetto separatamente. Per ulteriori informazioni sull'invalidamento degli oggetti, consulta Invalidamento di file.