Comment résoudre les problèmes liés aux erreurs 504 dans CloudFront ?

Lecture de 4 minute(s)
0

J'utilise une distribution Amazon CloudFront pour diffuser du contenu. Toutefois, les utilisateurs reçoivent un message d'erreur 504 lorsqu'ils tentent d'accéder au contenu via un navigateur Web. Comment puis-je résoudre ces erreurs ?

Brève description

CloudFront renvoie deux types d'erreurs 504 :

  • 504 : les erreurs « Gateway Timeout » (« Délai d'attente de la passerelle ») se produisent lorsque l'erreur est renvoyée par l'origine, puis transmise à l'utilisateur via CloudFront.
  • 504 : les erreurs « The request could not be satisfied » (« La requête n'a pas pu être satisfaite ») se produisent lorsque l'origine n'a pas répondu à CloudFront dans le délai imparti et que la demande a donc expiré.

En fonction du message d'erreur que vous recevez, consultez la section relative à la résolution.

Résolution

504 : erreur « Gateway Timeout » (« Délai d'attente de la passerelle »)

Vérifiez que les ports appropriés sont ouverts sur votre groupe de sécurité.

Assurez-vous que le serveur d'origine autorise le trafic entrant en provenance de CloudFront, généralement sur le port 443 ou 80.

Si votre origine utilise Elastic Load Balancing, passez en revue les groupes de sécurité ELB. Assurez-vous que les groupes de sécurité autorisent le trafic entrant en provenance de CloudFront.

Vérifiez que le pare-feu du serveur d'origine autorise les connexions depuis CloudFront

En fonction de votre système d'exploitation, vérifiez que le pare-feu autorise le trafic pour les ports 443 et 80.

Si vous utilisez Redhat Linux View, vérifiez que les règles de votre pare-feu correspondent aux paramètres suivants.

Règles de pare-feu :

$ sudo firewall-cmd --permanent --zone=public --list-ports

Ajouter des règles de façon permanente :

$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp       
$ sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

Si vous utilisez Ubuntu Linux, vérifiez que les règles de votre pare-feu correspondent aux paramètres suivants.

Règles de pare-feu Ubuntu Linux View :

$ sudo ufw status verbose

Ajouter des règles de façon permanente :

$ sudo ufw allow 80
$ sudo ufw allow 443

Si vous utilisez le pare-feu Windows sur un serveur Windows, consultez la section Ajouter ou modifier une règle de pare-feu dans la documentation Microsoft.

Assurez-vous que votre serveur personnalisé est accessible via Internet

Si CloudFront n'est pas en mesure d'accéder à votre origine via Internet, CloudFront renvoie une erreur 504. Pour vérifier que le trafic Internet peut se connecter à votre origine, vérifiez que vos règles HTTP et HTTPS correspondent aux paramètres suivants.

Pour le trafic HTTPS :

nc -zv OriginDomainName/IP_Address 443
telnet OriginDomainName/IP_Address 443

Pour le trafic HTTP :

nc -zv OriginDomainName 80
telnet OriginDomainName 80

504 : « The request could not be satisfied » (« La requête n'a pas pu être satisfaite »)

Mesurez la latence typique et à haute charge de votre application Web

Utilisez la commande suivante pour mesurer la réactivité de votre application Web :

curl -w "DNS Lookup Time: %{time_namelookup} \nConnect time: %{time_connect} \nTLS Setup: %{time_appconnect} \nRedirect Time: %{time_redirect} \nTime to first byte: %{time_starttransfer} \nTotal time: %{time_total} \n" -o /dev/null https://www.example.com/yourobject

Remarque : pour https://www.example.com/yourobject, entrez l'URL de l'application Web que vous testez.

Le résultat est similaire à ce qui suit :

DNS Lookup Time: 0.212319   
Connect time: 0.371254   
TLS Setup: 0.544175  
Redirect Time: 0.000000   
Time to first byte: 0.703863   
Total time: 0.703994

En fonction de l'emplacement de la demande, résolvez les problèmes de l'étape qui affiche une latence élevée.

Ajoutez des ressources ou réglez des serveurs et des bases

Assurez-vous que votre serveur dispose de suffisamment de processeur, de mémoire et d'espace disque pour traiter les requêtes des utilisateurs.

Configurez des connexions persistantes sur votre serveur principal. Ces connexions contribuent à la latence lorsque les connexions doivent être rétablies pour les demandes suivantes.

Ajuster la valeur du délai d'attente CloudFront

Si les étapes de dépannage précédentes n'ont pas résolu les erreurs HTTP 504, mettez à jour le temps spécifié dans votre distribution pour le délai d'attente de réponse de l'origine.


Informations connexes

Code d'état HTTP 504 (délai d'attente de la passerelle)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans