Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comportement des demandes et des réponses pour les origines Amazon S3 Origins
Pour comprendre comment CloudFront traite les demandes et les réponses lorsque vous utilisez Amazon S3 comme origine, consultez les sections suivantes :
Rubriques
Comment CloudFront traite et transmet les demandes à votre Amazon S3 d'origine
Découvrez comment CloudFront traite les demandes des visiteurs et les transmet à votre point d'origine Amazon S3.
Table des matières
- Durée et durée minimale de la mise en cache TTL
- Adresses IP client
- GETDemandes conditionnelles
- Cookies
- Partage de ressources entre origines () CORS
- GETdemandes qui incluent un corps
- HTTPméthodes
- HTTPen-têtes de demande qui CloudFront suppriment ou mettent à jour
- Durée maximale d'une demande et longueur maximale d'un URL
- OCSPagrafage
- Protocoles
- Chaînes de requête
- Délai d’attente et tentatives de connexion à l’origine
- Délai de réponse de l’origine
- Demandes simultanées pour le même objet (réduction des demandes)
Durée et durée minimale de la mise en cache TTL
Pour contrôler la durée pendant laquelle vos objets restent dans CloudFront le cache avant CloudFront de transmettre une autre demande à votre origine, vous pouvez :
-
Configurer votre origine pour ajouter un
Cache-Control
ou un champ d’en-têteExpires
à chaque objet. -
Spécifiez une valeur pour le paramètre Minimum TTL dans les comportements CloudFront du cache.
-
Utiliser la valeur par défaut de 24 heures.
Pour de plus amples informations, veuillez consulter Gérer la durée pendant laquelle le contenu reste dans le cache (expiration).
Adresses IP client
Si un utilisateur envoie une demande sans CloudFront inclure d'en-tête de X-Forwarded-For
demande, CloudFront obtient l'adresse IP du spectateur à partir de la TCP connexion, ajoute un X-Forwarded-For
en-tête qui inclut l'adresse IP et transmet la demande à l'origine. Par exemple, s'il CloudFront obtient l'adresse IP 192.0.2.2
de la TCP connexion, il transmet l'en-tête suivant à l'origine :
X-Forwarded-For: 192.0.2.2
Si un utilisateur envoie une demande CloudFront et inclut un en-tête de X-Forwarded-For
demande, CloudFront obtient l'adresse IP du spectateur à partir de la TCP connexion, l'ajoute à la fin de l'X-Forwarded-For
en-tête et transmet la demande à l'origine. Par exemple, si la demande du spectateur inclut X-Forwarded-For:
192.0.2.4,192.0.2.3
et CloudFront obtient l'adresse IP 192.0.2.2
de la TCP connexion, elle transmet l'en-tête suivant à l'origine :
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Note
L'X-Forwarded-For
en-tête contient des IPv4 adresses (telles que 192.0.2.44) et des IPv6 adresses (telles que 2001:0 db 8:85 a3 : :8a2e : 0370:7334).
GETDemandes conditionnelles
Lorsqu'il CloudFront reçoit une demande pour un objet expiré depuis un cache périphérique, il la transmet à l'origine Amazon S3 pour obtenir la dernière version de l'objet ou pour obtenir la confirmation d'Amazon S3 que le cache CloudFront périphérique possède déjà la dernière version. Lorsque Amazon S3 a initialement envoyé l'objet à CloudFront, il a inclus une ETag
valeur et une LastModified
valeur dans la réponse. Dans la nouvelle demande transmise CloudFront à Amazon S3, CloudFront ajoute l'un des en-têtes suivants ou les deux :
-
Un en-tête
If-Match
ouIf-None-Match
qui contient la valeurETag
pour la version expirée de l’objet. -
Un en-tête
If-Modified-Since
qui contient la valeurLastModified
pour la version expirée de l’objet.
Amazon S3 utilise ces informations pour déterminer si l'objet a été mis à jour et, par conséquent, s'il convient de renvoyer l'objet dans son intégralité CloudFront ou de renvoyer uniquement un code d'état HTTP 304 (non modifié).
Cookies
Amazon S3 ne traite pas les cookies. Si vous configurez un comportement de cache pour transférer des cookies vers une origine Amazon S3, CloudFront transférez les cookies, mais Amazon S3 les ignore. Toutes les demandes futures pour le même objet, que vous faites varier le cookie ou non, sont servies à partir de l’objet existant dans le cache.
Partage de ressources entre origines () CORS
Si vous CloudFront souhaitez respecter les paramètres de partage de ressources entre origines d'Amazon S3, configurez CloudFront pour transférer les en-têtes sélectionnés vers Amazon S3. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les en-têtes des demandes.
GETdemandes qui incluent un corps
Si une GET
demande d'utilisateur inclut un corps, CloudFront renvoie un code d'HTTPétat 403 (Interdit) au spectateur.
HTTPméthodes
Si vous configurez CloudFront pour traiter toutes les HTTP méthodes qu'il prend en charge, CloudFront accepte les demandes suivantes des utilisateurs et les transmet à votre point d'origine Amazon S3 :
-
DELETE
-
GET
-
HEAD
-
OPTIONS
-
PATCH
-
POST
-
PUT
CloudFront met toujours en cache les réponses GET
et les HEAD
demandes. Vous pouvez également configurer CloudFront pour mettre en cache les réponses aux OPTIONS
demandes. CloudFront ne met pas en cache les réponses aux demandes qui utilisent les autres méthodes.
Si vous souhaitez utiliser des téléchargements en plusieurs parties pour ajouter des objets à un compartiment Amazon S3, vous devez ajouter un contrôle CloudFront d'accès à l'origine (OAC) à votre distribution et accorder OAC les autorisations nécessaires. Pour de plus amples informations, veuillez consulter Restreindre l'accès à une origine Amazon Simple Storage Service.
Important
Si vous configurez CloudFront pour accepter et transmettre à Amazon S3 toutes les HTTP méthodes prises CloudFront en charge, vous devez créer une CloudFront OAC pour restreindre l'accès à votre contenu Amazon S3 et accorder OAC les autorisations requises. Par exemple, si vous configurez CloudFront pour accepter et transférer ces méthodes parce que vous souhaitez les utiliser, vous devez configurer les PUT
politiques relatives aux compartiments Amazon S3 afin de traiter les DELETE
demandes de manière appropriée afin que les utilisateurs ne puissent pas supprimer les ressources que vous ne souhaitez pas voir supprimées. Pour de plus amples informations, veuillez consulter Restreindre l'accès à une origine Amazon Simple Storage Service.
Pour de plus amples informations sur les opérations prises en charge par Amazon S3, veuillez consulter la documentation Amazon S3.
HTTPen-têtes de demande qui CloudFront suppriment ou mettent à jour
CloudFront supprime ou met à jour certains en-têtes avant de transférer les demandes à votre origine Amazon S3. Pour la plupart des en-têtes, ce comportement est le même que pour les origines personnalisées. Pour une liste complète des en-têtes de HTTP demande et de la manière dont ils CloudFront sont traités, consultezHTTPen-têtes et CloudFront comportement des demandes (personnalisés et origines d'Amazon S3).
Durée maximale d'une demande et longueur maximale d'un URL
La longueur maximale d’une demande, avec le chemin, la chaîne de requête (le cas échéant) et les en-têtes inclus, est de 20480 octets.
CloudFront construit un à URL partir de la demande. Sa longueur maximale URL est de 8192 octets.
Si une demande URL dépasse la longueur maximale, CloudFront renvoie le code d'HTTPétat 413 (Request Entity Too Large) au visualiseur, puis met fin à la TCP connexion avec le visualiseur.
OCSPagrafage
Lorsqu'un utilisateur soumet une HTTPS demande pour un objet, CloudFront il doit confirmer auprès de l'autorité de certification (CA) que le SSL certificat du domaine n'a pas été révoqué. OCSPl'agrafage accélère la validation du certificat en permettant de valider le certificat et de CloudFront mettre en cache la réponse de l'autorité de certification, de sorte que le client n'a pas besoin de valider le certificat directement auprès de l'autorité de certification.
L'amélioration des performances de l'OCSPagrafage est plus prononcée en cas de CloudFront réception de nombreuses HTTPS demandes d'objets dans le même domaine. Chaque serveur situé dans un emplacement CloudFront périphérique doit soumettre une demande de validation distincte. Lorsqu'il CloudFront reçoit un grand nombre de HTTPS demandes pour le même domaine, chaque serveur situé à la périphérie reçoit rapidement une réponse de l'autorité de certification qu'il peut agrafer sur un paquet lors de la SSL poignée de main. Lorsque le téléspectateur est convaincu que le certificat est valide, il CloudFront peut servir l'objet demandé. Si votre distribution ne reçoit pas beaucoup de trafic dans un emplacement CloudFront périphérique, les nouvelles demandes sont plus susceptibles d'être dirigées vers un serveur qui n'a pas encore validé le certificat auprès de l'autorité de certification. Dans ce cas, le visualiseur exécute séparément l'étape de validation et le CloudFront serveur sert l'objet. Ce CloudFront serveur soumet également une demande de validation à l'autorité de certification. Ainsi, la prochaine fois qu'il recevra une demande contenant le même nom de domaine, il recevra une réponse de validation de la part de l'autorité de certification.
Protocoles
CloudFront transmet HTTP ou HTTPS demande au serveur d'origine en fonction du protocole de la demande du spectateur, HTTP soitHTTPS.
Important
Si votre compartiment Amazon S3 est configuré comme point de terminaison de site Web, vous ne pouvez pas le configurer CloudFront HTTPS pour communiquer avec votre point d'origine, car Amazon S3 ne prend pas en charge HTTPS les connexions dans cette configuration.
Chaînes de requête
Vous pouvez configurer si CloudFront les paramètres de chaîne de requête sont transmis à votre origine Amazon S3. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les paramètres de chaîne de requête.
Délai d’attente et tentatives de connexion à l’origine
Le délai d'expiration de la connexion d'origine est le nombre de secondes d' CloudFront attente lorsque vous essayez d'établir une connexion avec l'origine.
Les tentatives de connexion à l'origine correspondent au nombre de CloudFront tentatives de connexion à l'origine.
Ensemble, ces paramètres déterminent la durée des CloudFront tentatives de connexion à l'origine avant de basculer vers l'origine secondaire (dans le cas d'un groupe d'origine) ou de renvoyer une réponse d'erreur au lecteur. Par défaut, CloudFront attend jusqu'à 30 secondes (3 tentatives de 10 secondes chacune) avant de tenter de se connecter à l'origine secondaire ou de renvoyer une réponse d'erreur. Vous pouvez réduire ce délai en spécifiant moins de tentatives, un délai d’attente de connexion plus court, ou les deux.
Pour de plus amples informations, veuillez consulter Contrôlez les délais et les tentatives d'origine.
Délai de réponse de l’origine
Le délai de réponse de l’origine, également appelé délai d’attente des opérations de lecture depuis l’origine ou délai de demande à l’origine, s’applique aux deux valeurs suivantes :
-
Durée, en secondes, d' CloudFront attente d'une réponse après avoir transmis une demande à l'origine.
-
Temps d' CloudFront attente, en secondes, après réception d'un paquet de réponse provenant de l'origine et avant de recevoir le paquet suivant.
CloudFront le comportement dépend de la HTTP méthode de la demande du spectateur :
-
GET
etHEAD
demandes : si l'origine ne répond pas dans les 30 secondes ou cesse de répondre pendant 30 secondes, CloudFront interrompt la connexion. Si le nombre spécifié de tentatives de connexion d'origine est supérieur à 1, CloudFront réessaie pour obtenir une réponse complète. CloudFront essaie jusqu'à 3 fois, selon la valeur du paramètre des tentatives de connexion d'origine. Si l'origine ne répond pas lors de la dernière tentative, elle CloudFront ne réessaie pas tant qu'elle n'a pas reçu une autre demande de contenu sur la même origine. -
DELETE
,OPTIONS
,PATCH
PUT
, etPOST
demandes : si l'origine ne répond pas dans les 30 secondes, CloudFront interrompt la connexion et n'essaie pas de la contacter à nouveau. Le client peut soumettre à nouveau la demande si nécessaire.
Vous ne pouvez pas modifier le délai de réponse pour une origine Amazon S3 (un compartiment S3 qui n’est pas configuré avec un hébergement de site web statique).
Demandes simultanées pour le même objet (réduction des demandes)
Lorsqu'un emplacement CloudFront périphérique reçoit une demande pour un objet et que celui-ci n'est pas dans le cache ou que l'objet mis en cache a expiré, envoie CloudFront immédiatement la demande à l'origine. Toutefois, s'il existe des demandes simultanées pour le même objet, c'est-à-dire si des demandes supplémentaires pour le même objet (avec la même clé de cache) arrivent à l'emplacement périphérique avant de CloudFront recevoir la réponse à la première demande, faites CloudFront une pause avant de transmettre les demandes supplémentaires à l'origine. Cette brève pause permet de réduire la charge sur l'origine. CloudFront envoie la réponse de la demande initiale à toutes les demandes qu'elle a reçues pendant sa pause. Ce processus se nomme la réduction des demandes. Dans CloudFront les journaux, la première demande est identifiée comme étant Miss
dans le x-edge-result-type
champ, et les demandes réduites sont identifiées comme unHit
. Pour plus d'informations sur CloudFront les journaux, consultezCloudFront et journalisation des fonctions Edge.
CloudFront réduit uniquement les demandes qui partagent une clé de cache. Si les demandes supplémentaires ne partagent pas la même clé de cache parce que, par exemple, vous avez configuré CloudFront le cache en fonction des en-têtes de demande, des cookies ou des chaînes de requête, CloudFront transfère toutes les demandes avec une clé de cache unique à votre origine.
Si vous souhaitez empêcher le regroupement de toutes les demandes, vous pouvez utiliser la politique de cache géréCachingDisabled
, qui empêche également la mise en cache. Pour de plus amples informations, veuillez consulter Utiliser des politiques de cache gérées.
Si vous souhaitez empêcher la réduction des demandes pour des objets spécifiques, vous pouvez définir le comportement minimum TTL du cache sur 0 et configurer l'origine à envoyerCache-Control:
private
,Cache-Control: no-store
, Cache-Control:
no-cache
Cache-Control: max-age=0
, ouCache-Control: s-maxage=0
. Ces configurations augmenteront la charge sur votre origine et introduiront une latence supplémentaire pour les demandes simultanées qui sont suspendues pendant l' CloudFront attente de la réponse à la première demande.
Important
Actuellement, la réduction des demandes CloudFront n'est pas prise en charge si vous activez le transfert de cookies dans la politique de cache, la politique de demande d'origine ou les anciens paramètres de cache.
Comment CloudFront traite les réponses provenant de votre Amazon S3
Découvrez comment CloudFront traite les réponses provenant de votre Amazon S3 d'origine.
Table des matières
Requêtes annulées
Si un objet ne se trouve pas dans le cache périphérique et si un utilisateur met fin à une session (par exemple, ferme un navigateur) après avoir récupéré l'objet depuis votre origine mais avant de pouvoir livrer l'objet demandé, il CloudFront ne CloudFront met pas l'objet en cache dans l'emplacement périphérique.
HTTPen-têtes de réponse qui CloudFront suppriment ou mettent à jour
CloudFront supprime ou met à jour les champs d'en-tête suivants avant de transmettre la réponse de votre origine Amazon S3 au lecteur :
-
X-Amz-Id-2
-
X-Amz-Request-Id
-
Set-Cookie
— Si vous configurez CloudFront pour transférer les cookies, le champSet-Cookie
d'en-tête sera transmis aux clients. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les cookies. -
Trailer
-
Transfer-Encoding
— Si votre origine Amazon S3 renvoie ce champ d'en-tête, CloudFront définissez la valeur surchunked
avant de renvoyer la réponse au lecteur. -
Upgrade
-
Via
— CloudFront définit la valeur suivante dans la réponse au visualiseur :Via:
http-version
alphanumeric-string
.cloudfront.net (CloudFront)
Par exemple, la valeur est similaire à la suivante :
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
Taille de fichier maximale pouvant être mise en cache
La taille maximale d'un corps de réponse enregistré CloudFront dans son cache est de 50 Go. Cette taille inclut les réponses de transfert fragmentées qui ne spécifient pas la valeur d’en-tête Content-Length
.
Vous pouvez utiliser CloudFront pour mettre en cache un objet dont la taille est supérieure à cette taille en utilisant des demandes de plage pour demander les objets dans des parties dont la taille est inférieure ou égale à 50 Go. CloudFrontmet en cache ces parties car chacune d'elles a une taille inférieure ou égale à 50 Go. Une fois que l’utilisateur a récupéré toutes les parties de l’objet, il peut reconstruire l’objet d’origine plus large. Pour de plus amples informations, veuillez consulter Utiliser les demandes de plage pour mettre en cache de large objets.
Redirections
Vous pouvez configurer un compartiment Amazon S3 pour rediriger toutes les demandes vers un autre nom d'hôte ; il peut s'agir d'un autre compartiment Amazon S3 ou d'un HTTP serveur. Si vous configurez un compartiment pour rediriger toutes les demandes et si le compartiment est l'origine d'une CloudFront distribution, nous vous recommandons de le configurer pour rediriger toutes les demandes vers une CloudFront distribution en utilisant soit le nom de domaine de la distribution (par exemple, d111111abcdef8.cloudfront.net) soit un autre nom de domaine (a) associé à une distribution (par exemple, CNAME exemple.com). Dans le cas contraire, les demandes CloudFront des utilisateurs sont ignorées et les objets sont servis directement depuis la nouvelle origine.
Note
Si vous redirigez les demandes vers un autre nom de domaine, vous devez également mettre à jour le DNS service correspondant à votre domaine en ajoutant un CNAME enregistrement. Pour de plus amples informations, veuillez consulter Utilisez la personnalisation URLs en ajoutant des noms de domaine alternatifs (CNAMEs).
Voici ce qui se passe lorsque vous configurez un compartiment pour rediriger toutes les demandes :
-
Un utilisateur (par exemple, un navigateur) demande un objet à CloudFront.
-
CloudFront transmet la demande au compartiment Amazon S3 qui est à l'origine de votre distribution.
-
Amazon S3 renvoie un code de HTTP statut 301 (déplacé définitivement) ainsi que le nouvel emplacement.
-
CloudFront met en cache le code d'état de redirection et le nouvel emplacement, et renvoie les valeurs au visualiseur. CloudFront ne suit pas la redirection pour récupérer l'objet depuis le nouvel emplacement.
-
Le visualiseur envoie une autre demande pour l'objet, mais cette fois, il indique le nouvel emplacement d'où il provient CloudFront :
-
Si le compartiment Amazon S3 redirige toutes les demandes vers une CloudFront distribution, en utilisant le nom de domaine de la distribution ou un autre nom de domaine, CloudFront demande l'objet depuis le compartiment Amazon S3 ou le HTTP serveur du nouvel emplacement. Lorsque le nouvel emplacement renvoie l'objet, le CloudFront renvoie au visualiseur et le met en cache dans un emplacement périphérique.
-
Si le compartiment Amazon S3 redirige les demandes vers un autre emplacement, la deuxième demande est ignorée CloudFront. Le compartiment Amazon S3 ou le HTTP serveur du nouvel emplacement renvoie l'objet directement au visualiseur, de sorte que l'objet n'est jamais mis en cache dans un cache CloudFront périphérique.
-