View a markdown version of this page

Comportamento di richieste e risposte per origini Amazon S3 - 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à.

Comportamento di richieste e risposte per origini Amazon S3

Per capire come CloudFront elabora le richieste e le risposte quando utilizzi Amazon S3 come origine, consulta le seguenti sezioni:

In che modo CloudFront elabora e inoltra le richieste all'origine di Amazon S3

Scopri come CloudFront elabora le richieste degli spettatori e le inoltra alla tua origine Amazon S3.

Durata del caching e TTL minimo

Per controllare per quanto tempo i tuoi oggetti rimangono in una CloudFront cache prima di CloudFront inoltrare un'altra richiesta all'origine, puoi:

  • Configurare la tua origine per aggiungere un'intestazione Cache-Control o un campo di intestazione Expires a ogni oggetto.

  • Specificate un valore per il TTL minimo nei comportamenti CloudFront della cache.

  • Utilizzare il valore di default di 24 ore.

Per ulteriori informazioni, consulta Gestione della durata di permanenza dei contenuti nella cache (scadenza).

Indirizzi IP client

Se un visualizzatore invia una richiesta a CloudFront e non include un'intestazione di X-Forwarded-For richiesta, CloudFront ottiene l'indirizzo IP del visualizzatore dalla connessione TCP, aggiunge un'X-Forwarded-Forintestazione che include l'indirizzo IP e inoltra la richiesta all'origine. Ad esempio, se CloudFront ottiene l'indirizzo IP 192.0.2.2 dalla connessione TCP, inoltra la seguente intestazione all'origine:

X-Forwarded-For: 192.0.2.2

Se un visualizzatore invia una richiesta CloudFront e include un'intestazione della X-Forwarded-For richiesta, CloudFront ottiene l'indirizzo IP del visualizzatore dalla connessione TCP, lo aggiunge alla fine dell'X-Forwarded-Forintestazione e inoltra la richiesta all'origine. Ad esempio, se la richiesta del visualizzatore include X-Forwarded-For: 192.0.2.4,192.0.2.3 e CloudFront ottiene l'indirizzo IP 192.0.2.2 dalla connessione TCP, inoltra la seguente intestazione all'origine:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Nota

L'intestazione X-Forwarded-For contiene indirizzi IPv4 (ad esempio 192.0.2.44) e IPv6 (ad esempio 2001:0db8:85a3::8a2e:0370:7334).

Quando analizzi gli indirizzi IPv6 nell'X-Forwarded-Forintestazione, utilizza librerie di analisi degli indirizzi IP standard in grado di gestire qualsiasi formato IPv6 RFC 4291 valido.

Richieste GET condizionali

Quando CloudFront riceve una richiesta per un oggetto scaduto da una cache edge, la inoltra all'origine di Amazon S3 per ottenere la versione più recente dell'oggetto o per ottenere la conferma da Amazon S3 che la cache edge ha già la versione più recente. CloudFront Quando Amazon S3 ha originariamente inviato l'oggetto a CloudFront, ha incluso un ETag valore e un LastModified valore nella risposta. Nella nuova richiesta CloudFront inoltrata ad Amazon S3, CloudFront aggiunge una o entrambe le seguenti intestazioni:

  • Un'intestazione If-Match o If-None-Match che contiene il valore ETag per la versione scaduta dell'oggetto.

  • Un'intestazione If-Modified-Since che contiene il valore LastModified per la versione scaduta dell'oggetto.

Amazon S3 utilizza queste informazioni per determinare se l'oggetto è stato aggiornato e, quindi, se restituire l'intero oggetto CloudFront o restituire solo un codice di stato HTTP 304 (non modificato).

Cookie

Amazon S3 non elabora i cookie. Se configuri un comportamento della cache per inoltrare i cookie a un'origine Amazon S3, CloudFront inoltra i cookie, ma Amazon S3 li ignora. Tutte le richieste future per lo stesso oggetto, indipendentemente dalla variazione o meno del cookie, vengono servite dall'oggetto esistente nella cache.

Cross-origin condivisione delle risorse (CORS)

Se desideri rispettare CloudFront le impostazioni di condivisione delle risorse tra origini di Amazon S3, configura l'inoltro delle intestazioni selezionate CloudFront ad Amazon S3. Per ulteriori informazioni, consulta Caching dei contenuti in base alle intestazioni di richiesta.

Richieste GET che includono un corpo

Se una GET richiesta di visualizzazione include un corpo, CloudFront restituisce al visualizzatore un codice di stato HTTP 403 (Proibito).

Metodi HTTP

Se configuri CloudFront per elaborare tutti i metodi HTTP supportati, CloudFront accetta le seguenti richieste dai visualizzatori e le inoltra all'origine di Amazon S3:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

CloudFront memorizza sempre nella cache le risposte e le richieste. GET HEAD Puoi anche configurare CloudFront la cache delle risposte alle OPTIONS richieste. CloudFront non memorizza nella cache le risposte alle richieste che utilizzano gli altri metodi.

Se desideri utilizzare caricamenti in più parti per aggiungere oggetti a un bucket Amazon S3, devi aggiungere un controllo di accesso all' CloudFront origine (OAC) alla tua distribuzione e concedere all'OAC le autorizzazioni necessarie. Per ulteriori informazioni, consulta Limitazione dell’accesso a un’origine Amazon S3.

Importante

Se configuri CloudFront per accettare e inoltrare ad Amazon S3 tutti i metodi HTTP CloudFront supportati, devi creare un CloudFront OAC per limitare l'accesso ai tuoi contenuti Amazon S3 e concedere all'OAC le autorizzazioni richieste. Ad esempio, se configuri per accettare e CloudFront inoltrare questi metodi perché desideri utilizzare il PUT metodo, devi configurare le policy dei bucket di Amazon S3 per gestire le DELETE richieste in modo appropriato in modo che gli spettatori non possano eliminare risorse che non desideri. Per ulteriori informazioni, consulta Limitazione dell’accesso a un’origine Amazon S3.

Per informazioni sulle operazioni supportate da Amazon S3 consulta la documentazione di Amazon S3.

Intestazioni di richiesta HTTP che rimuovono o si aggiornano CloudFront

CloudFront rimuove o aggiorna alcune intestazioni prima di inoltrare le richieste all'origine di Amazon S3. Per la maggior parte delle intestazioni questo comportamento corrisponde a quello delle origini personalizzate. Per un elenco completo delle intestazioni delle richieste HTTP e di come CloudFront le elabora, consulta. Intestazioni e CloudFront comportamento delle richieste HTTP (origini personalizzate e Amazon S3)

Lunghezza massima di una richiesta e lunghezza massima di un URL

La lunghezza massima di una richiesta, inclusi il percorso, la stringa di query (se presente) e le intestazioni, è di 32.768 byte.

CloudFront costruisce un URL dalla richiesta. La lunghezza massima di questo URL è di 8192 byte.

Se un URL supera la lunghezza massima, CloudFront restituisce il codice di stato HTTP 414 (URI Too Long) al visualizzatore. Se una richiesta supera la lunghezza massima perché viene superata la dimensione dell'intestazione, CloudFront restituisce il codice di stato HTTP 494 al visualizzatore. In entrambi i casi, CloudFront quindi interrompe la connessione TCP al visualizzatore.

Stapling OCSP

Quando un visualizzatore invia una richiesta HTTPS per un oggetto CloudFront o deve confermare con l'autorità di certificazione (CA) che il certificato SSL per il dominio non è stato revocato. La pinzatura OCSP accelera la convalida del certificato consentendo di CloudFront convalidare il certificato e di memorizzare nella cache la risposta della CA, in modo che il client non debba convalidare il certificato direttamente con la CA.

Il miglioramento delle prestazioni dello stapling OCSP è più marcato quando si CloudFront ricevono molte richieste HTTPS per oggetti nello stesso dominio. Ogni server in una edge location di CloudFront deve inviare una richiesta di convalida distinta. Quando CloudFront riceve molte richieste HTTPS per lo stesso dominio, ogni server nella edge location riceve subito una risposta dalla CA che può incollare un pacchetto nell'handshake SSL. Quando il visualizzatore è soddisfatto della validità del certificato, CloudFront può fornire l'oggetto richiesto. Se la tua distribuzione non riceve molto traffico in una edge location di CloudFront , è più probabile che le nuove richieste siano indirizzate a un server che non ha ancora convalidato il certificato presso la CA. In tal caso, il visualizzatore esegue separatamente la fase di convalida e il CloudFront server serve l'oggetto. Tale CloudFront server invia anche una richiesta di convalida alla CA, quindi la volta successiva che riceve una richiesta che include lo stesso nome di dominio, riceve una risposta di convalida dalla CA.

Protocolli

CloudFront inoltra le richieste HTTP o HTTPS al server di origine in base al protocollo della richiesta del visualizzatore, HTTP o HTTPS.

Importante

Se il bucket Amazon S3 è configurato come endpoint di un sito Web, non puoi configurare l'uso di HTTPS CloudFront per comunicare con l'origine perché Amazon S3 non supporta le connessioni HTTPS in quella configurazione.

Stringhe di query

Puoi configurare se CloudFront inoltrare i parametri della stringa di query all'origine di Amazon S3. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti basati su parametri delle stringhe di query.

Timeout connessione origine e tentativi

Il timeout della connessione di Origin è il numero di secondi di CloudFront attesa quando si tenta di stabilire una connessione all'origine.

I tentativi di connessione all'origine sono il numero di CloudFront tentativi di connessione all'origine.

Insieme, queste impostazioni determinano la durata dei CloudFront tentativi di connessione all'origine prima di passare all'origine secondaria (nel caso di un gruppo di origine) o restituire una risposta di errore al visualizzatore. Per impostazione predefinita, CloudFront attende fino a 30 secondi (3 tentativi da 10 secondi ciascuno) prima di tentare di connettersi all'origine secondaria o restituire una risposta di errore. Puoi ridurre questo tempo specificando un timeout di connessione più breve, un numero inferiore di tentativi o entrambi.

Per ulteriori informazioni, consulta Controllo dei timeout e dei tentativi di origine.

Timeout di risposta dell'origine

Il timeout di risposta origine, noto anche come timeout di lettura origine o timeout di richiesta origine, si applica a entrambi i valori seguenti:

  • Il tempo, in secondi, di CloudFront attesa di una risposta dopo l'inoltro di una richiesta all'origine.

  • La quantità di tempo, in secondi, che CloudFront attende dopo la ricezione di un pacchetto di risposta dall'origine e prima di ricevere il pacchetto successivo.

CloudFront il comportamento dipende dal metodo HTTP della richiesta del visualizzatore:

  • GETe HEAD richieste: se l'origine non risponde entro 30 secondi o smette di rispondere per 30 secondi, CloudFront interrompe la connessione. Se il numero di tentativi di connessione di origine specificato è superiore a 1, CloudFront riprova per ottenere una risposta completa. CloudFront tenta fino a 3 volte, a seconda del valore dell'impostazione dei tentativi di connessione di origine. Se l'origine non risponde durante il terzo tentativo, CloudFront non riprova fino a che non riceve un'altra richiesta per il contenuto sulla stessa origine.

  • DELETE,OPTIONS, PATCHPUT, e POST richieste: se l'origine non risponde entro 30 secondi, CloudFront interrompe la connessione e non riprova a contattare l'origine. Il client può inoltrare nuovamente la richiesta, se necessario.

Non è possibile modificare il timeout di risposta per un'origine Amazon S3 (un bucket S3 che non è configurato con l'hosting di siti Web statici).

Richieste simultanee per lo stesso oggetto (compressione richieste)

Quando una CloudFront edge location riceve una richiesta per un oggetto e l'oggetto non è nella cache o l'oggetto memorizzato nella cache è scaduto, invia CloudFront immediatamente la richiesta all'origine. Tuttavia, se ci sono richieste simultanee per lo stesso oggetto, ovvero se richieste aggiuntive per lo stesso oggetto (con la stessa chiave di cache) arrivano all'edge location prima di CloudFront ricevere la risposta alla prima richiesta, si CloudFront interrompe prima di inoltrare le richieste aggiuntive all'origine. Questa breve pausa aiuta a ridurre il carico sull'origine. CloudFront invia la risposta della richiesta originale a tutte le richieste ricevute mentre era in pausa. Questa operazione è chiamata compressione richieste. Nei CloudFront log, la prima richiesta è identificata come a Miss nel x-edge-result-type campo e le richieste compresse sono identificate come. Hit Per ulteriori informazioni sui CloudFront log, vedereCloudFront e registrazione delle funzioni edge.

CloudFront comprime solo le richieste che condividono una chiave di cache. Se le richieste aggiuntive non condividono la stessa chiave di cache perché, ad esempio, hai configurato la cache in base CloudFront alle intestazioni delle richieste, ai cookie o alle stringhe di query, CloudFront inoltra tutte le richieste con una chiave di cache univoca all'origine.

Se desideri impedire la compressione di tutte le richieste, puoi utilizzare la policy della cache gestita CachingDisabled, che impedisce anche il caching. Per ulteriori informazioni, consulta Utilizzo delle policy della cache gestite.

Se desideri evitare la compressione delle richieste per oggetti specifici, puoi impostare il TTL minimo per il comportamento cache su 0 e configurare l’origine in modo che invii Cache-Control: private, Cache-Control: no-store, Cache-Control: no-cache, Cache-Control: max-age=0 o Cache-Control: s-maxage=0. Queste configurazioni aumenteranno il carico sull'origine e introdurranno una latenza aggiuntiva per le richieste simultanee che vengono messe in pausa durante l' CloudFront attesa della risposta alla prima richiesta.

In che modo CloudFront elabora le risposte dall'origine di Amazon S3

Scopri come CloudFront elabora le risposte dalla tua origine Amazon S3.

Richieste annullate

Se un oggetto non è nella cache edge e se un visualizzatore termina una sessione (ad esempio, chiude un browser) dopo averlo CloudFront recuperato dall'origine ma prima che possa consegnare l'oggetto richiesto, CloudFront non memorizza l'oggetto nella cache nell'edge location.

Intestazioni di risposta HTTP che rimuovono o aggiornano CloudFront

CloudFront rimuove o aggiorna i seguenti campi di intestazione prima di inoltrare la risposta dall'origine di Amazon S3 al visualizzatore:

  • X-Amz-Id-2

  • X-Amz-Request-Id

  • Set-Cookie— Se CloudFront configuri l'inoltro dei cookie, inoltrerà il campo di Set-Cookie intestazione ai clienti. Per ulteriori informazioni, consulta Caching dei contenuti basati su cookie.

  • Trailer

  • Transfer-Encoding— Se l'origine di Amazon S3 restituisce questo campo di intestazione, CloudFront imposta il valore su chunked prima di restituire la risposta allo spettatore.

  • Upgrade

  • Via— CloudFront imposta il valore seguente nella risposta allo spettatore:

    Via: http-version alphanumeric-string.cloudfront.net (CloudFront)

    Ad esempio, il valore è simile al seguente:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Dimensione massima del file memorizzabile nella cache

La dimensione massima di un corpo di risposta che CloudFront salva nella cache è di 50 GB. Questa dimensione include risposte di trasferimento in blocchi che non specificano il valore di intestazione Content-Length.

È possibile utilizzare CloudFront per memorizzare nella cache un oggetto più grande di questa dimensione utilizzando le richieste di intervallo per richiedere gli oggetti in parti ciascuna di 50 GB o inferiori. CloudFrontmemorizza queste parti nella cache perché ognuna di esse è pari o inferiore a 50 GB. Dopo che il visualizzatore ha recuperato tutte le parti dell'oggetto, può ricostruire l'oggetto originale più grande. Per ulteriori informazioni, consulta Utilizzare richieste di intervallo per memorizzare nella cache oggetti di grandi dimensioni.

Reindirizzamenti

Puoi configurare un bucket Amazon S3 per reindirizzare tutte le richieste a un altro nome host, ovvero un altro bucket Amazon S3 o un server HTTP. Se configuri un bucket per reindirizzare tutte le richieste e se il bucket è l'origine di una CloudFront distribuzione, ti consigliamo di configurare il bucket per reindirizzare tutte le richieste a una CloudFront distribuzione utilizzando il nome di dominio per la distribuzione (ad esempio, d111111abcdef8.cloudfront.net) o un nome di dominio alternativo (un CNAME) associato a una distribuzione (ad esempio, example.com). Altrimenti, le richieste del visualizzatore vengono CloudFront bypassate e gli oggetti vengono serviti direttamente dalla nuova origine.

Nota

Se reindirizzi le richieste a un nome di dominio alternativo, devi anche aggiornare il servizio DNS per il tuo dominio aggiungendo un record CNAME. Per ulteriori informazioni, consulta Utilizzo di URL personalizzati aggiungendo nomi di dominio alternativi (CNAME).

Di seguito viene descritto ciò che accade quando configuri un bucket per reindirizzare tutte le richieste:

  1. Un visualizzatore (ad esempio un browser) richiede un oggetto da CloudFront.

  2. CloudFront inoltra la richiesta al bucket Amazon S3 che è l'origine della tua distribuzione.

  3. Amazon S3 restituisce un codice di stato HTTP 301 (Spostato in modo permanente) e la nuova posizione.

  4. CloudFront memorizza nella cache il codice di stato del reindirizzamento e la nuova posizione e restituisce i valori al visualizzatore. CloudFront non segue il reindirizzamento per ottenere l'oggetto dalla nuova posizione.

  5. Il visualizzatore invia un'altra richiesta per l'oggetto, ma questa volta specifica la nuova posizione da cui l'ha ricevuto: CloudFront

    • Se il bucket Amazon S3 reindirizza tutte le richieste a una CloudFront distribuzione, utilizzando il nome di dominio per la distribuzione o un nome di dominio alternativo, CloudFront richiede l'oggetto dal bucket Amazon S3 o dal server HTTP nella nuova posizione. Quando la nuova posizione restituisce l'oggetto, lo restituisce al visualizzatore e lo CloudFront memorizza nella cache in una edge location.

    • Se il bucket Amazon S3 reindirizza le richieste verso un'altra posizione, la seconda richiesta viene ignorata. CloudFront Il bucket Amazon S3 o il server HTTP nella nuova posizione restituisce l'oggetto direttamente al visualizzatore, in modo che l'oggetto non venga mai memorizzato nella cache perimetrale. CloudFront