Comportement des demandes et des réponses pour les origines Amazon S3 Origins - Amazon CloudFront

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

Comment CloudFront traite et transmet les demandes à votre Amazon S3 d'origine

Cette rubrique contient des informations sur la manière dont CloudFront les demandes des visiteurs sont traitées et les transmettent à votre point d'origine Amazon S3.

Durée de conservation dans le cache et durée de vie minimale

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ête Expires à chaque objet.

  • Spécifiez une valeur pour le TTL minimal dans les comportements CloudFront du cache.

  • Utiliser la valeur par défaut de 24 heures.

Pour de plus amples informations, veuillez consulter Gestion de la durée de conservation de contenu dans le cache périphérique (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 connexion TCP, ajoute un X-Forwarded-For en-tête incluant l'adresse IP et transmet la demande à l'origine. Par exemple, s'il CloudFront obtient l'adresse IP 192.0.2.2 de la connexion TCP, 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 connexion TCP, l'ajoute à la fin de l'X-Forwarded-Foren-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 connexion TCP, 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’en-tête X-Forwarded-For contient les adresses IPv4 (par exemple, 192.0.2.44) et les adresses IPv6 (par exemple, 2001:0db8:85a3::8a2e:0370:7334).

Requêtes GET 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 soit pour obtenir la dernière version de l'objet, soit 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, ajoutez l' CloudFront un des éléments suivants ou les deux :

  • Un en-tête If-Match ou If-None-Match qui contient la valeur ETag pour la version expirée de l’objet.

  • Un en-tête If-Modified-Since qui contient la valeur LastModified 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 des ressources cross-origin (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 Mise en cache de contenu basée sur des en-têtes de requêtes.

Demandes GET qui incluent un corps de texte

Si une GET demande d'utilisateur inclut un corps, CloudFront renvoie un code d'état HTTP 403 (Interdit) au lecteur.

Méthodes HTTP

Si vous configurez CloudFront pour traiter toutes les méthodes HTTP 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 utilisant 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 donner à l'OAC les autorisations nécessaires. Pour de plus amples informations, veuillez consulter Restriction de l’accès à l'origine Amazon S3.

Important

Si vous configurez CloudFront pour accepter et transférer vers Amazon S3 toutes les méthodes HTTP compatibles, vous devez créer un contrôle CloudFront d'accès à l'origine (OAC) pour restreindre l'accès à votre contenu Amazon S3 et donner à l'OAC les autorisations requises. CloudFront Par exemple, si vous configurez CloudFront pour accepter et transférer ces méthodes parce que vous souhaitez les utiliserPUT, vous devez configurer les 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 qu'ils suppriment. Pour de plus amples informations, veuillez consulter Restriction de l’accès à l'origine Amazon S3.

Pour de plus amples informations sur les opérations prises en charge par Amazon S3, veuillez consulter la documentation Amazon S3.

En-têtes de requête HTTP 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 obtenir la liste complète des en-têtes de requête HTTP et leur mode CloudFront de traitement, consultezEn-têtes et CloudFront comportement des requêtes HTTP (personnalisés et origines d'Amazon S3).

Longueur maximale d’une demande et longueur maximale d’une 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 une URL à partir de la requête. La longueur maximale de cette URL est de 8 192 caractères.

Si une demande ou une URL dépasse ces valeurs maximales, CloudFront renvoie le code d'état HTTP 413, Request Entity Too Large, au visualiseur, puis met fin à la connexion TCP avec le visualiseur.

OCSP Stapling

Lorsqu'un utilisateur soumet une demande HTTPS pour un objet, il CloudFront doit confirmer auprès de l'autorité de certification (CA) que le certificat SSL du domaine n'a pas été révoqué. L'agrafage OCSP 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'agrafage OCSP est plus prononcée lorsque vous recevez CloudFront un grand nombre de requêtes HTTPS pour des objets du 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 requêtes HTTPS pour le même domaine, chaque serveur situé à la périphérie reçoit rapidement une réponse de l'autorité de certification lui indiquant qu'il peut « agrafer » un paquet dans le cadre de la poignée de contact SSL ; 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 serveur CloudFront soumet également une demande de validation à l'autorité de certification. De ce fait, la fois suivante qu'il reçoit une demande incluant le même nom de domaine, il dispose d'une réponse de validation de l'autorité de certification.

Protocoles

CloudFront transmet les requêtes HTTP ou HTTPS au serveur d'origine en fonction du protocole de la demande du visualiseur, HTTP ou HTTPS.

Important

Si votre compartiment Amazon S3 est configuré comme point de terminaison de site Web, vous ne pouvez pas le configurer CloudFront pour utiliser le protocole HTTPS pour communiquer avec votre origine, car Amazon S3 ne prend pas en charge les connexions HTTPS 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 Mise en cache de contenu basée 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ôle des délais d'expiration et des tentatives de l'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 le transfert d'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 méthode HTTP de la requête du spectateur :

  • GETet HEAD 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, PATCHPUT, et POST 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 Utilisation des stratégies de cache gérées.

Si vous souhaitez empêcher la réduction des demandes pour certains objets, vous pouvez définir la durée de vie minimale pour le comportement du cache sur 0 et configurer l'origine de sorte à envoyer Cache-Control: private, Cache-Control: no-store, Cache-Control: no-cache, Cache-Control: max-age=0 ou Cache-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.

Comment CloudFront traite les réponses provenant de votre Amazon S3

Cette rubrique contient des informations sur le traitement CloudFront des réponses provenant de votre Amazon S3 d'origine.

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.

En-têtes de réponse HTTP 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 champ Set-Cookie d'en-tête sera transmis aux clients. Pour de plus amples informations, veuillez consulter Mise en cache de contenu basée sur des cookies.

  • Trailer

  • Transfer-Encoding— Si votre origine Amazon S3 renvoie ce champ d'en-tête, CloudFront définissez la valeur sur chunked avant de renvoyer la réponse au lecteur.

  • Upgrade

  • Via— CloudFront définit la valeur suivante dans la réponse au visualiseur :

    Via: version_http chaîne_alphanumérique.cloudfront.net (CloudFront)

    Par exemple, si le client envoie une demande via HTTP/1.1, la valeur ressemble à ce qui suit :

    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 serveur HTTP. 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 (un CNAME) associé à une distribution (par exemple, 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 des demandes vers un nom de domaine alternatif, vous devez également mettre à jour le service DNS pour votre domaine en ajoutant un enregistrement CNAME. Pour de plus amples informations, veuillez consulter Utilisation d’URL personnalisées pour les fichiers en ajoutant d’autres noms de domaine (CNAME).

Voici ce qui se passe lorsque vous configurez un compartiment pour rediriger toutes les demandes :

  1. Un utilisateur (par exemple, un navigateur) demande un objet à CloudFront.

  2. CloudFront transmet la demande au compartiment Amazon S3 qui est à l'origine de votre distribution.

  3. Amazon S3 renvoie un code de statut HTTP 301 (Déplacé de façon permanente), ainsi que le nouvel emplacement.

  4. 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.

  5. 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 serveur HTTP 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 serveur HTTP 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.