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 usi Amazon S3 come origine, consulta le seguenti sezioni:

In che modo CloudFront elabora e inoltra le richieste alla tua origine Amazon S3

Scopri come CloudFront elabora le richieste dei visualizzatori e le inoltra alla tua origine Amazon S3.

Durata e minimo della memorizzazione nella cache TTL

Per controllare per quanto tempo gli 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 Minimum TTL nei comportamenti CloudFront della cache.

  • Utilizzare il valore di default di 24 ore.

Per ulteriori informazioni, consulta Gestisci la durata della 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 TCP connessione, 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 TCP connessione, inoltra la seguente intestazione all'origine:

X-Forwarded-For: 192.0.2.2

Se un visualizzatore invia una richiesta CloudFront e include un'intestazione di X-Forwarded-For richiesta, CloudFront ottiene l'indirizzo IP del visualizzatore dalla TCP connessione, 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 TCP connessione, inoltra la seguente intestazione all'origine:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Nota

L'X-Forwarded-Forintestazione contiene IPv4 indirizzi (come 192.0.2.44) e IPv6 indirizzi (come 2001:0 db 8:85 a3: :8a2e: 0370:7334).

Richieste condizionali GET

Quando CloudFront riceve una richiesta per un oggetto scaduto da una cache edge, inoltra la richiesta all'origine Amazon S3 per ottenere la versione più recente dell'oggetto o per ottenere la conferma da Amazon S3 che la cache edge ha già CloudFront la versione più recente. Quando Amazon S3 ha originariamente inviato l'oggetto a CloudFront, includeva 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 di 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.

Condivisione di risorse tra origini diverse () CORS

Se desideri rispettare CloudFront le impostazioni di condivisione delle risorse tra origini diverse di Amazon S3, configura l'inoltro delle intestazioni selezionate CloudFront ad Amazon S3. Per ulteriori informazioni, consulta Memorizza i contenuti della cache in base alle intestazioni delle richieste.

GETrichieste che includono un corpo

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

HTTPmetodi

Se configuri CloudFront per elaborare tutti i HTTP metodi che supporta, CloudFront accetta le seguenti richieste dagli utenti e le inoltra alla tua origine Amazon S3:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

CloudFront memorizza sempre nella cache le risposte e le richieste. GET HEAD È inoltre possibile configurare CloudFront la memorizzazione nella 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 CloudFront un controllo di accesso all'origine OAC () alla tua distribuzione e fornire OAC le autorizzazioni necessarie. Per ulteriori informazioni, consulta Limita l'accesso a un'origine Amazon Simple Storage Service.

Importante

Se configuri CloudFront per accettare e inoltrare ad Amazon S3 tutti i HTTP metodi CloudFront supportati, devi creare un account CloudFront OAC per limitare l'accesso ai tuoi contenuti Amazon S3 e fornire 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 utenti non possano eliminare le risorse che non desideri. Per ulteriori informazioni, consulta Limita l'accesso a un'origine Amazon Simple Storage Service.

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

HTTPintestazioni di richiesta che rimuovono o aggiornano CloudFront

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

Lunghezza massima di una richiesta e lunghezza massima di a URL

La lunghezza massima di una richiesta, inclusi il percorso, l'eventuale stringa di query e le intestazioni, è di 20.480 byte.

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

Se una richiesta o una URL supera la lunghezza massima, CloudFront restituisce il codice di HTTP stato 413 (Request Entity Too Large) al visualizzatore, quindi interrompe la connessione con il TCP visualizzatore.

OCSPpinzatura

Quando un visualizzatore invia una HTTPS richiesta per un oggetto CloudFront o il visualizzatore deve confermare con l'autorità di certificazione (CA) che il SSL certificato per il dominio non è stato revocato. OCSPstapling velocizza la convalida dei certificati 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 OCSP stapling è più pronunciato quando si CloudFront ricevono molte HTTPS richieste di oggetti nello stesso dominio. Ogni server in una CloudFront edge location deve inviare una richiesta di convalida separata. Quando CloudFront riceve molte HTTPS richieste per lo stesso dominio, ogni server nell'edge location riceve subito una risposta dalla CA che può inserire in un pacchetto contenuto nell'handshake. SSL Quando il visualizzatore ritiene che il certificato sia valido, CloudFront può servire l'oggetto richiesto. Se la distribuzione non riceve molto traffico in una CloudFront edge location, è più probabile che le nuove richieste vengano indirizzate a un server che non ha ancora convalidato il certificato con la CA. In tal caso, il visualizzatore esegue separatamente la fase di convalida e il CloudFront server serve l'oggetto. Tale CloudFront server invia inoltre una richiesta di convalida alla CA, quindi la prossima volta che riceve una richiesta che include lo stesso nome di dominio, riceve una risposta di convalida dalla CA.

Protocolli

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

Importante

Se il tuo bucket Amazon S3 è configurato come endpoint del sito Web, non puoi configurarlo CloudFront per utilizzarlo HTTPS per comunicare con l'origine perché Amazon S3 non supporta connessioni in quella configurazione. HTTPS

Stringhe di query

Puoi configurare se CloudFront inoltrare i parametri della stringa di query alla tua origine Amazon S3. Per ulteriori informazioni, consulta Contenuto della cache in base ai parametri della stringa di query.

Timeout connessione origine e tentativi

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

I tentativi di connessione all'origine sono il numero di volte in cui si CloudFront tenta di connettersi 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 Controlla i timeout e i 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:

  • La quantità di tempo, in secondi, che CloudFront attende una risposta dopo l'inoltro di una richiesta all'origine.

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

CloudFront il comportamento dipende dal HTTP metodo 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 specificato di tentativi di connessione all'origine è superiore a 1, CloudFront riprova per ottenere una risposta completa. CloudFront prova fino a 3 volte, in base al valore dell'impostazione dei tentativi di connessione di origine. Se l'origine non risponde durante l'ultimo tentativo, CloudFront non riprova finché non riceve un'altra richiesta di 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 è presente 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 dalla richiesta originale a tutte le richieste ricevute mentre era in pausa. Questa operazione è chiamata compressione richieste. Nei CloudFront log, la prima richiesta viene identificata come una Miss nel x-edge-result-type campo e le richieste compresse vengono identificate come a. Hit Per ulteriori informazioni sui CloudFront log, vedere. CloudFront 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 o ai cookie o alle stringhe di query, CloudFront inoltra tutte le richieste con una chiave di cache univoca all'origine.

Se vuoi evitare che tutte le richieste vengano compresse, puoi utilizzare la policy di cache gestitaCachingDisabled, che impedisce anche la memorizzazione nella cache. Per ulteriori informazioni, consulta Usa politiche di cache gestite.

Se vuoi evitare che le richieste vengano compresse per oggetti specifici, puoi impostare il comportamento minimo TTL della cache su 0 e configurare l'origine per inviareCache-Control: private, Cache-Control: no-storeCache-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.

Importante

Attualmente, CloudFront non supporta la compressione della richiesta se abiliti l'inoltro dei cookie nella politica della cache, nella politica di richiesta di origine o nelle impostazioni della cache legacy.

In che modo CloudFront elabora le risposte dalla tua origine Amazon S3

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

Richieste annullate

Se un oggetto non si trova 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 lo memorizza nella cache nell'edge location.

HTTPintestazioni di risposta che rimuovono o aggiornano CloudFront

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

  • X-Amz-Id-2

  • X-Amz-Request-Id

  • Set-Cookie— Se configuri CloudFront per inoltrare i cookie, inoltrerà il campo di Set-Cookie intestazione ai client. Per ulteriori informazioni, consulta Contenuto della cache basato sui cookie.

  • Trailer

  • Transfer-Encoding— Se la tua origine Amazon S3 restituisce questo campo di intestazione, CloudFront imposta il valore su chunked prima di restituire la risposta al visualizzatore.

  • Upgrade

  • Via— CloudFront imposta il valore seguente nella risposta al visualizzatore:

    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 viene CloudFront salvato 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 di dimensioni maggiori di tali dimensioni utilizzando le richieste di intervallo per richiedere gli oggetti in parti di dimensioni pari o inferiori a 50 GB ciascuna. CloudFrontmemorizza nella cache queste parti perché ognuna di esse pesa 50 GB o meno. 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, che può essere 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 (aCNAME) associato a una distribuzione (ad esempio, example.com). In caso contrario, le richieste del visualizzatore vengono CloudFront ignorate e gli oggetti vengono serviti direttamente dalla nuova origine.

Nota

Se reindirizzi le richieste a un nome di dominio alternativo, devi anche aggiornare il DNS servizio per il tuo dominio aggiungendo un record. CNAME Per ulteriori informazioni, consulta Utilizza la funzionalità personalizzata URLs aggiungendo nomi di dominio alternativi () CNAMEs.

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 il codice di HTTP stato 301 (Spostato permanentemente) 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 recuperare l'oggetto dalla nuova posizione.

  5. Il visualizzatore invia un'altra richiesta per l'oggetto, ma questa volta specifica la nuova posizione da cui è stato ottenuto: 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 nella nuova posizione. HTTP Quando la nuova posizione restituisce l'oggetto, lo restituisce al visualizzatore e lo CloudFront memorizza nella cache in una posizione periferica.

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