Comment CloudFront traite les codes d’état HTTP 4xx et 5xx provenant de votre origine
Lorsque CloudFront demande un objet de votre compartiment Amazon S3 ou de votre serveur d’origine personnalisée, votre origine renvoie parfois un code d’état HTTP 4xx ou 5xx qui indique qu’une erreur s’est produite. Le comportement de CloudFront dépend de :
-
Si vous avez configuré des pages d’erreur personnalisées
-
Si vous avez configuré pendant combien de temps CloudFront doit mettre en cache les réponses d’erreur de votre origine (durée de conservation minimale des erreurs dans le cache)
-
Le code d’état
-
Pour les codes de statut 5xx, si l’objet demandé figure actuellement dans le cache périphérique CloudFront
-
Pour certains codes d’état 4xx, si l’origine renvoie un en-tête
Cache-Control max-ageouCache-Control s-maxage
CloudFront met toujours en cache les réponses aux demandes GET et HEAD. Vous pouvez également configurer CloudFront pour mettre en cache les réponses aux demandes OPTIONS. CloudFront ne met pas en cache les réponses aux demandes qui utilisent d’autres méthodes.
Si l’origine ne répond pas, la demande CloudFront à l’origine expire, ce qui est considéré comme une erreur HTTP 5xx de l’origine, même si l’origine n’a pas répondu avec cette erreur. Dans ce scénario, CloudFront continue de servir le contenu mis en cache. Pour plus d’informations, consultez Origine non disponible.
Si vous avez activé la journalisation, CloudFront écrit les résultats dans les journaux quel que soit le code de statut HTTP.
Pour plus d’informations sur les fonctions et options liées au message d’erreur renvoyé par CloudFront, consultez les ressources suivantes :
-
Pour plus d’informations sur les paramètres de pages d’erreur personnalisées sur la console CloudFront, consultez Pages d’erreur personnalisées et mise en cache des erreurs.
-
Pour plus d’informations sur la durée de conservation minimale des erreurs dans le cache sur la console CloudFront, consultez Erreur de mise en cache de TTL minimum (secondes).
-
Pour une liste des codes de statut HTTP mis en cache par CloudFront, consultez Codes d’état HTTP 4xx et 5xx que CloudFront met en cache.
Rubriques
Traitement des erreurs par CloudFront lorsque vous avez configuré des pages d’erreur personnalisées
Si vous avez configuré des pages d’erreur personnalisées, le comportements de CloudFront dépend de si l’objet demandé est dans le cache périphérique.
L’objet demandé n’est pas dans le cache périphérique
CloudFront continue d’essayer d’extraire l’objet demandé de votre origine lorsque que toutes les conditions suivantes sont réunies :
-
Un utilisateur demande un objet.
-
L’objet n’est pas dans le cache périphérique.
-
L’origine renvoie un code de statut HTTP 4xx ou 5xx et l’une des conditions suivantes est vraie :
-
L’origine renvoie un code de statut HTTP 5xx à la place d’un code de statut 304 (Non modifié) ou une version mise à jour de l’objet.
-
L’origine renvoie un code de statut HTTP 4xx qui n’est pas limité par un en-tête de contrôle de cache et est inclus dans la liste suivante de codes de statut: Codes d’état HTTP 4xx et 5xx que CloudFront met en cache.
-
L’origine renvoie un code d’état HTTP 4xx sans en-tête
Cache-Control max-ageou sans en-têteCache-Control s-maxage, et le code d’état est inclus dans la liste suivante de codes d’état : Control Codes de statut HTTP 4xx que CloudFront met en cache en fonction des en-têtes de Cache-Control.
-
CloudFront effectue les opérations suivantes :
-
Dans le cache périphérique CloudFront qui a reçu la demande de l’utilisateur, CloudFront vérifie la configuration de votre distribution et obtient le chemin de la page d’erreur personnalisée qui correspond au code de statut renvoyé par votre origine.
-
CloudFront recherche le premier comportement de cache de votre distribution dont un modèle de chemin correspond au chemin de la page d’erreur personnalisée.
-
L’emplacement périphérique CloudFront envoie une demande pour une page d’erreur personnalisée à l’origine qui est spécifiée dans le comportement de cache.
-
L’origine renvoie la page d’erreur personnalisée à l’emplacement périphérique.
-
CloudFront renvoie la page d’erreur personnalisée à l’utilisateur qui a fait la demande et met également en cache la page d’erreur personnalisée pour le maximum de ce qui suit :
-
La durée spécifiée par la durée de vie minimale (TTL) de la mise en cache des erreurs (10 secondes par défaut)
-
La durée spécifiée par un en-tête
Cache-Control max-ageou un en-têteCache-Control s-maxagequi est renvoyé par l’origine lorsque la première demande a généré l’erreur
-
-
Une fois le temps de mise en cache (déterminé à l’étape 5) écoulé, CloudFront essaie de nouveau d’obtenir l’objet demandé en transmettant une autre requête à votre origine. CloudFront continue de réessayer selon les intervalles spécifiés par la durée de conservation minimale des erreurs dans le cache.
Note
Si vous avez également configuré un comportement de cache pour cette même page d’erreur personnalisée, CloudFront utilise à la place la durée de vie maximale du comportement de cache. Dans ce cas, CloudFront effectuera les opérations suivantes pour les étapes 5 et 6 :
-
Une fois que CloudFront a renvoyé la page d’erreur personnalisée à l’utilisateur ayant effectué la demande, il contrôle la durée de vie du comportement de cache (par exemple, une durée de vie par défaut de 5 secondes). CloudFront met ensuite en cache la page d’erreur personnalisée jusqu’à cette valeur maximale.
-
Une fois les 5 secondes écoulées, CloudFront récupère de nouveau la page d’erreur personnalisée auprès de l’origine. CloudFront continuera de réessayer à des intervalles définis par la durée de vie du comportement de cache.
Pour plus d’informations, consultez Paramètres de durée de vie du comportement de cache.
L’objet demandé est dans le cache périphérique
CloudFront continue de servir l’objet figurant actuellement dans le cache périphérique lorsque que toutes les conditions suivantes sont réunies :
-
Un utilisateur demande un objet.
-
L’objet se trouve dans le cache périphérique, mais il a expiré
-
L’origine renvoie un code de statut HTTP 5xx à la place d’un code de statut 304 (Non modifié) ou une version mise à jour de l’objet.
CloudFront effectue les opérations suivantes :
-
Si votre origine renvoie un code de statut 5xx, CloudFront sert l’objet même s’il a expiré. Pendant la période correspondant à la durée de conservation minimale des erreurs dans le cache, CloudFront continue de répondre aux demandes d’utilisateur en servant l’objet à partir du cache périphérique.
Si votre origine renvoie un code de statut 4xx, CloudFront renvoie le code de statut, et non l’objet demandé, à l’utilisateur.
-
Une fois la durée de conservation minimale des erreurs dans le cache écoulée, CloudFront tente à nouveau d’obtenir l’objet demandé en transmettant une autre demande à votre origine. Notez que si l’objet n’est pas souvent demandé, CloudFront peut l’exclure du cache périphérique alors que votre serveur d’origine renvoie encore des réponses 5xx. Pour plus d’informations sur la durée pendant laquelle des objets restent dans les caches périphériques CloudFront, consultez Gestion de la durée de conservation de contenu dans le cache (expiration).
Comment CloudFront traite les erreurs si vous n’avez pas configuré de pages d’erreur personnalisées
Si vous n’avez pas configuré de pages d’erreur personnalisées, le comportement de CloudFront dépend du fait que l’objet demandé se trouve ou non dans le cache en périphérie.
Rubriques
L’objet demandé n’est pas dans le cache périphérique
CloudFront continue d’essayer d’extraire l’objet demandé de votre origine lorsque que toutes les conditions suivantes sont réunies :
-
Un utilisateur demande un objet.
-
L’objet n’est pas dans le cache périphérique.
-
L’origine renvoie un code de statut HTTP 4xx ou 5xx et l’une des conditions suivantes est vraie :
-
L’origine renvoie un code de statut HTTP 5xx à la place d’un code de statut 304 (Non modifié) ou une version mise à jour de l’objet.
-
L’origine renvoie un code de statut HTTP 4xx qui n’est pas limité par un en-tête de contrôle de cache et est inclus dans la liste suivante de codes de statut: Codes d’état HTTP 4xx et 5xx que CloudFront met en cache
-
L’origine renvoie un code d’état HTTP 4xx sans en-tête
Cache-Control max-ageou sans en-têteCache-Control s-maxage, et le code d’état est inclus dans la liste suivante de codes d’état : Control Codes de statut HTTP 4xx que CloudFront met en cache en fonction des en-têtes de Cache-Control.
-
CloudFront effectue les opérations suivantes :
-
CloudFront renvoie le code de statut 4xx ou 5xx à l’utilisateur et met également en cache le code de statut dans le cache périphérique qui a reçu la demande pour le maximum de ce qui suit :
-
La durée spécifiée par la durée de vie minimale (TTL) de la mise en cache des erreurs (10 secondes par défaut)
-
La durée spécifiée par un en-tête
Cache-Control max-ageou un en-têteCache-Control s-maxagequi est renvoyé par l’origine lorsque la première demande a généré l’erreur
-
-
Pendant la durée de mise en cache (déterminée à l’étape 1), CloudFront répond aux demandes d’utilisateur suivantes pour le même objet avec le code de statut 4xx ou 5xx mis en cache.
-
Une fois le temps de mise en cache (déterminé à l’étape 1) écoulé, CloudFront essaie de nouveau d’obtenir l’objet demandé en transmettant une autre requête à votre origine. CloudFront continue de réessayer selon les intervalles spécifiés par la durée de conservation minimale des erreurs dans le cache.
L’objet demandé est dans le cache périphérique
CloudFront continue de servir l’objet figurant actuellement dans le cache périphérique lorsque que toutes les conditions suivantes sont réunies :
-
Un utilisateur demande un objet.
-
L’objet se trouve dans le cache périphérique, mais il a expiré Cela signifie que l’objet est périmé.
-
L’origine renvoie un code de statut HTTP 5xx à la place d’un code de statut 304 (Non modifié) ou une version mise à jour de l’objet.
CloudFront effectue les opérations suivantes :
-
Si votre origine renvoie un code d’erreur 5xx, CloudFront sert l’objet même s’il a expiré. Pendant la période correspondant à la durée de conservation minimale des erreurs dans le cache (10 secondes par défaut), CloudFront continue à répondre aux demandes d’utilisateur en servant l’objet à partir du cache périphérique.
Si votre origine renvoie un code de statut 4xx, CloudFront renvoie le code de statut, et non l’objet demandé, à l’utilisateur.
-
Une fois la durée de conservation minimale des erreurs dans le cache écoulée, CloudFront tente à nouveau d’obtenir l’objet demandé en transmettant une autre demande à votre origine. Si l’objet n’est pas souvent demandé, CloudFront peut l’exclure du cache périphérique alors que votre serveur d’origine renvoie encore des réponses 5xx. Pour plus d’informations, consultez Gestion de la durée de conservation de contenu dans le cache (expiration).
Astuce
-
Si vous configurez la directive
stale-if-errorouStale-While-Revalidate, vous pouvez spécifier la durée pendant laquelle les objets périmés restent disponibles dans le cache périphérique. Vous pouvez ainsi continuer à diffuser du contenu à vos utilisateurs même lorsque votre origine n’est pas disponible. Pour plus d’informations, consultez Diffusion de contenu périmé (expiré). -
CloudFront ne servira un objet périmé que jusqu’à la durée de vie maximale spécifiée. Après cette durée, l’objet ne sera plus disponible dans le cache périphérique.
Codes d’état HTTP 4xx et 5xx que CloudFront met en cache
CloudFront met en cache les codes de statut HTTP 4xx et 5xx renvoyés par l’origine, en fonction du code de statut spécifique qui est renvoyé et si votre origine renvoie des en-têtes spécifiques dans la réponse.
CloudFront met en cache les codes d’état HTTP 4xx et 5xx suivants renvoyés par votre origine. Si vous avez configuré une page d’erreur personnalisée pour un code d’état HTTP, CloudFront met celle-ci en cache.
Note
Si vous utilisez la politique de cache gérée CachingDisabled, CloudFront ne mettra pas en cache ces codes d’état ni les pages d’erreur personnalisées.
|
404 |
Introuvable |
|
414 |
URI de demande trop longue |
|
500 |
Erreur de serveur interne |
|
501 |
Non implémenté |
|
502 |
Passerelle erronée |
|
503 |
Service non disponible |
|
504 |
Délai de passerelle expiré |
Codes de statut HTTP 4xx que CloudFront met en cache en fonction des en-têtes de Cache-Control
CloudFront met en cache uniquement les codes de statut HTTP 4xx suivants renvoyés par votre origine si celle-ci renvoie un en-tête Cache-Control max-age ou Cache-Control s-maxage. Si vous avez configuré une page d’erreur personnalisée pour l’un de ces codes d’état HTTP (et que votre origine renvoie l’un des en-têtes de contrôle de cache), CloudFront met en cache la page d’erreur personnalisée.
|
400 |
Demande erronée |
|
403 |
Accès interdit |
|
405 |
Méthode non autorisée |
|
412¹ |
Échec de condition préalable |
|
415¹ |
Type de support non pris en charge |
¹ CloudFront ne prend pas en charge la création de pages d’erreur personnalisées pour ces codes d’état HTTP.