Generazione di risposte personalizzate agli errori
Se per un qualsiasi motivo, gli oggetti che stai distribuendo tramite CloudFront non sono disponibili, il tuo server Web in genere restituisce a CloudFront un codice di stato HTTP. Ad esempio, se un visualizzatore richiede un URL non valido, il tuo server Web restituisce a CloudFront un codice di stato HTTP 404 (Non trovato) e CloudFront, a sua volta, lo restituisce al visualizzatore.
Se lo desideri, puoi configurare CloudFront in modo che restituisca una risposta personalizzata all'errore al visualizzatore. Sono inoltre disponibili numerose opzioni per gestire il modo in cui CloudFront risponde quando si verifica un errore. Per specificare le opzioni per i messaggi di errore personalizzati, aggiornare la distribuzione CloudFront per specificare tali valori. Per ulteriori informazioni, consulta Configurazione del comportamento di risposta in caso di errore.
Se configuri CloudFront in modo da 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 che ha 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 CloudFront sia stato configurato per ottenere una pagina di errore personalizzata per un codice di stato 500 da un bucket Amazon S3. Tuttavia, qualcuno ha accidentalmente eliminato la pagina di errore personalizzata dal tuo bucket. CloudFront restituirà un codice di stato HTTP 404 (Non trovato) al visualizzatore che ha richiesto l'oggetto.
Quando CloudFront restituisce una pagina di errore personalizzata a un visualizzatore, si pagano i costi CloudFront standard per la pagina di errore personalizzata, non gli addebiti per l'oggetto richiesto. Per maggiori informazioni sugli addebiti di CloudFront, consulta Prezzi di Amazon CloudFront
Argomenti
- Configurazione del comportamento di risposta in caso di errore
- Creazione di una pagina personalizzata di errore per codici di stato HTTP specifici
- Archiviazione degli oggetti e delle pagine personalizzate di errore in diverse sedi
- Modifica dei codici di risposta restituiti da CloudFront
- Controllo del tempo in cui CloudFront memorizza gli errori nella cache
Configurazione del comportamento di risposta in caso di errore
Per configurare le risposte personalizzate agli errori, puoi utilizzare la console CloudFront, l'API CloudFront o AWS CloudFormation. Indipendentemente dal modo in cui decidi di aggiornare la configurazione, prendi in considerazione i seguenti suggerimenti e consigli:
-
Salva le pagine personalizzate di errore in un percorso accessibile a CloudFront. Ti consigliamo di memorizzarle in un bucket Amazon S3 e di non conservarle nello stesso percorso del resto del tuo sito Web o del contenuto dell'applicazione. Se memorizzi le pagine di errore personalizzate sulla stessa origine del sito Web o dell'applicazione e l'origine inizia a restituire errori 5xx, CloudFront non potrà ottenere le pagine di errore personalizzate perché il server di origine non sarà disponibile. Per ulteriori informazioni, consulta Archiviazione degli oggetti e delle pagine personalizzate di errore in diverse sedi.
-
Assicurati che CloudFront disponga dell'autorizzazione per ottenere le pagine di errore personalizzate. Se le pagine di errore personalizzate sono memorizzate in Amazon S3, le pagine devono essere accessibili pubblicamente o è necessario configurare un controllo di accesso all'origine (OAC) CloudFront. Se le pagine di errore personalizzate sono memorizzate in un'origine personalizzata, le pagine devono essere accessibili pubblicamente.
-
(Facoltativo) Se lo desideri, configura l'origine per aggiungere una intestazione
Cache-Control
oExpires
insieme alle pagine di errore personalizzate. Puoi inoltre utilizzare l'impostazione TTL minima di memorizzazione nella cache degli errori per controllare per quanto tempo CloudFront memorizza nella cache le pagine di errore personalizzate. Per ulteriori informazioni, consulta Controllo del tempo in cui CloudFront memorizza gli errori nella cache.
Configurare le risposte personalizzate agli errori (console CloudFront)
Per configurare le risposte personalizzate di errore nella console CloudFront, è necessario disporre di una distribuzione CloudFront. 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 Nozioni di base su una distribuzione CloudFront semplice.
Per configurare le risposte personalizzate agli errori (console)
-
Accedi alla AWS Management Console e apri la pagina Distribuzioni nella console CloudFront all'indirizzo https://console.aws.amazon.com/cloudfront/v3/home#distributions
. -
Nell'elenco delle distribuzioni, scegli la distribuzione da aggiornare.
-
Seleziona la scheda Pagine errori , quindi Crea risposta personalizzata all'errore.
-
Immetti i valori applicabili. Per ulteriori informazioni, consulta Custom Error Pages and Error Caching (Pagine di errore personalizzate e caching errori).
-
Dopo aver immesso i valori desiderati, seleziona Crea.
Configurazione delle risposte personalizzate agli errori (API CloudFront o AWS CloudFormation)
Per configurare le risposte personalizzate agli errori con l'API CloudFront o AWS CloudFormation, utilizza il tipo CustomErrorResponse
in una distribuzione. Per ulteriori informazioni, consulta gli argomenti seguenti:
-
AWS::CloudFront::Distribution CustomErrorResponse nella Guida per l'utente di AWS CloudFormation
-
CustomErrorResponse nella Documentazione di riferimento delle API di Amazon CloudFront
Creazione di una pagina personalizzata di errore per codici di stato HTTP specifici
Per visualizzare un messaggio di errore personalizzato anziché il messaggio predefinito, ad esempio, una pagina che utilizza la stessa formattazione del resto del sito Web, puoi configurare CloudFront in modo da restituire al visualizzatore un oggetto (ad esempio, un file HTML) contenente il messaggio di errore personalizzato.
Per specificare il file specifico da restituire e gli errori per cui il file deve essere restituito, aggiorna la distribuzione CloudFront in modo da specificare tali valori. Per ulteriori informazioni, consulta Configurazione del comportamento di risposta in caso di errore.
Di seguito è riportata una pagina di errore personalizzata di esempio:

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 distribuiti tramite CloudFront possono essere non 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 a CloudFront un codice di stato HTTP nell'intervallo 4xx.
-
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 di un server, il server di origine restituisce a CloudFront un codice di stato HTTP nella gamma 5xx oppure CloudFront non ottiene una risposta dal server di origine per un determinato periodo di tempo e presuppone un codice di stato 504 (Timeout del gateway).
Nei codici di stato HTTP per i quali CloudFront può restituire una pagina di errore personalizzata sono inclusi i seguenti:
-
400, 403, 404, 405, 414, 416
Nota È possibile creare una pagina di errore personalizzata per il codice di stato HTTP 416 (Impossibile attenersi all'intervallo richiesto) e modificare il codice di stato HTTP che CloudFront restituisce ai visualizzatori quando il server di origine restituisce a CloudFront un codice di stato 416. (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, pertanto, sebbene sia possibile specificare un valore per Error Caching Minimum TTL (TTL minimo di caching degli errori) per il codice di stato 416, CloudFront non lo utilizza.
-
500, 501, 502, 503, 504
Nota In alcuni casi, CloudFront non restituisce una pagina personalizzata di errore per il codice di stato HTTP 503 anche se si configura CloudFront per farlo. Se il codice di errore CloudFront è
Capacity Exceeded
oLimit Exceeded
, CloudFront restituisce un codice di stato 503 al visualizzatore senza utilizzare la pagina di errore personalizzata.
Per informazioni dettagliate su come CloudFront gestisce le risposte di errore dal server di origine, consulta Elaborazione e memorizzazione nella cache di codici di stato HTTP 4xx e 5xx restituiti dall'origine mediante CloudFront.
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 per restituire un codice di stato HTTP diverso al visualizzatore rispetto a quello ricevuto da CloudFront dall'origine. Ad esempio, se il server di origine restituisce a CloudFront un codice di stato 500, è possibile chiedere a CloudFront di restituire una pagina di errore personalizzata e un codice di stato 200 (OK) al visualizzatore. Ci sono vari motivi per cui chiedere a CloudFront di restituire al visualizzatore un codice di stato diverso da quello restituito a CloudFront dal server di origine:
-
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 si desidera distinguere tra diversi errori di server o client, è possibile specificare
400
o500
come valore restituito da CloudFront 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 standard CloudFront e si configura CloudFront in modo da modificare il codice di stato HTTP nella risposta, il valore della colonna sc-status
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, supponiamo che si configuri CloudFront per restituire un codice di stato 200
per il visualizzatore quando il server di origine restituisce a 404
(Non trovato) 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 configurare CloudFront per restituire 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 del tempo in cui CloudFront memorizza gli errori nella cache
CloudFront memorizza nella cache le risposte di errore 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 è ora disponibile.
Per ogni codice di stato 4xx e 5xx memorizzato nella cache da CloudFront, è possibile specificare la durata della memorizzazione degli errori nella cache, Error Caching Minimum TTL (TTL minimo caching errore). (Per ulteriori informazioni, consulta Codici di stato HTTP 4xx e 5xx che CloudFront memorizza nella cache.) Quando specifichi una durata, è importante prestare attenzione alle seguenti informazioni:
-
Se si specifica una durata breve di memorizzazione nella cache degli errori, CloudFront inoltra più richieste all'origine rispetto a quando si specifica una durata più lunga. Per gli errori 5xx, questo potrebbe aggravare il problema che ha causato inizialmente l'errore del server di origine.
-
Quando il server di origine restituisce un errore per un oggetto, CloudFront risponde alle richieste per l'oggetto con il messaggio di errore o con la pagina di errore personalizzata fino alla scadenza della durata di memorizzazione nella cache. Se si specifica una durata lunga di memorizzazione degli errori nella cache, CloudFront potrebbe continuare a rispondere alle richieste con un messaggio di errore o con la pagina di errore personalizzata per molto tempo dopo che l'oggetto diventa nuovamente disponibile.
È possibile creare una pagina di errore personalizzata per il codice di stato HTTP 416 (Impossibile attenersi all'intervallo richiesto) e modificare il codice di stato HTTP che CloudFront restituisce ai visualizzatori quando il server di origine restituisce a CloudFront un codice di stato 416. (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, pertanto, sebbene sia possibile specificare un valore per Error Caching Minimum TTL (TTL minimo di caching degli errori) per il codice di stato 416, CloudFront non lo utilizza.
Per controllare il periodo durante il quale CloudFront memorizza nella cache gli errori per i singoli oggetti, è possibile configurare il server di origine per aggiungere l'intestazione applicabile alla risposta di errore per quell'oggetto.
Se il server di origine aggiunge una direttiva Cache-Control: max-age
o Cache-Control:
s-maxage
, oppure un'intestazione Expires
: CloudFront memorizza nella cache le risposte di errore per il valore maggiore dell'intestazione o Error Caching Minimum TTL (TTL minimo di caching degli errori).
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 il server di origine aggiunge altre direttive Cache-Control
o non aggiunge intestazioni: CloudFront memorizza nella cache le risposte di errore per il valore di Error Caching Minimum TTL (TTL minimo di caching degli errori).
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.