Ma distribution Amazon CloudFront a reçu un message d'erreur "503 Service Unavailable".
Résolution
Pour résoudre un code de statut HTTP 503 (Service non disponible), effectuez les actions suivantes pour corriger votre erreur.
Erreurs HTTP 503 pour votre serveur d'origine
En cas de problèmes de performance sur le serveur d'origine ou si le serveur n'est pas disponible, le message d’erreur "503 Service Unavailable" peut s'afficher.
Pour résoudre ce problème, consultez la section Le serveur d’origine ne dispose pas d'une capacité suffisante pour prendre en charge le taux de requête.
Erreurs HTTP 503 avec Lambda@Edge ou la fonction CloudFront
S'il existe des exceptions non gérées dans la fonction AWS Lambda ou des erreurs dans le code, l'erreur "503 Service Unavailable" peut s’afficher.
Pour corriger votre code, ajoutez des instructions de journalisation aux fonctions Lambda. Consultez vos journaux Lambda@Edge et vos journaux de fonctions CloudFront pour vérifier que CloudFront fonctionne correctement. Pour plus d'informations, consultez les sections Résoudre les problèmes d'invocation dans Lambda et Résoudre les problèmes d'exécution dans Lambda.
Si vous dépassez un quota Lambda@Edge, Lambda bloque l'exécution de la fonction Lambda et CloudFront renvoie une erreur HTTP 503. Pour résoudre une erreur HTTP 503 due à un dépassement de quotas, consultez la section Comment résoudre les erreurs 502 et 503 causées par les fonctions Lambda@Edge dans CloudFront ?
Erreurs HTTP 503 avec Amazon S3
Si vous avez intégré des applications ou si votre origine provient d'Amazon Simple Storage Service (Amazon S3), une erreur HTTP 500 ou 503 peut s’afficher. Pour résoudre ces erreurs, consultez la section Comment résoudre une erreur HTTP 500 ou 503 provenant d'Amazon S3 ?
Empêcher CloudFront de mettre en cache les erreurs HTTP 503
CloudFront transmet les réponses aux erreurs depuis l'origine vers le client par défaut. CloudFront met en cache la réponse d'erreur de l'origine pendant 10 secondes.
Si la réponse d'erreur de l'origine contient un en-tête Cache-Control, CloudFront met l'erreur en cache avec la durée de vie (TTL) pertinente au lieu des 10 secondes par défaut. CloudFront ne met pas en cache ses propres réponses d'erreur, sauf indication contraire dans une réponse d’erreur personnalisée. Vous pouvez créer une réponse d'erreur personnalisée pour les erreurs HTTP 503 avec une TTL de 0 seconde afin d'empêcher CloudFront de mettre l'erreur en cache.
Pour optimiser l'efficacité du cache, utilisez la politique CachingOptimized. Cette politique définit une TTL minimale inférieure de 1 seconde pour les réponses aux erreurs plutôt que la valeur par défaut de 10 secondes. Pour plus d'informations, consultez la section Utiliser des politiques de cache gérées.
Il est recommandé d'intégrer une logique de nouvelle tentative dans vos applications pour réessayer les requêtes qui renvoient une erreur HTTP 503. Tous les kits SDK AWS sont dotés d'un mécanisme de nouvelle tentative intégré avec un algorithme qui utilise un retard exponentiel. Cet algorithme met en œuvre des temps d'attente de plus en plus longs entre les tentatives pour des réponses d'erreur consécutives. De nombreux algorithmes de backoff exponentiel utilisent le gigue (délai aléatoire) pour empêcher les collisions successives. Pour plus d'informations, consultez la section Comportement en matière de nouvelles tentatives.