Comment résoudre les erreurs ConnectionReset lorsque je charge ou télécharge des objets depuis Amazon S3 ?

Lecture de 4 minute(s)
0

Lorsque je charge ou télécharge des objets dans mon compartiment Amazon Simple Storage Service (Amazon S3), j'obtiens l'une des erreurs suivantes : ConnectionResetError, Connexion abandonnée ou Connexion réinitialisée par un homologue.

Résolution

Vous recevez des erreurs de réinitialisation de connexion car votre application ne parvient pas à établir de connexion aux points de terminaison Amazon S3. Cela peut être dû à des fermetures de connexions ou à des connexions devenues inactives lors de l'accès aux ressources S3. Ces erreurs se produisent en raison de problèmes liés à l'application ou à la couche client, au chemin réseau ou à toute autre ressource intermédiaire. Pour identifier la cause première du problème, vous devez identifier le composant à l'origine de l'erreur.

Tester la connectivité

Pour tester la connectivité, exécutez les commandes suivantes pour vérifier si votre machine peut établir une connexion à S3 via HTTP ou HTTPS.

$ telnet mybucket.s3.REGION-CODE.amazonaws.com 80  
$ telnet mybucket.s3.REGION-CODE.amazonaws.com 443

Contourner la validation SSL

Incluez le paramètre --no-verify-ssl dans votre demande pour contourner la validation SSL. Ce paramètre empêche la validation des certificats SSL. Toutefois, la demande passe par le port 443. Cette approche vous permet d'isoler les problèmes liés à la validation SSL.

Analyser le trafic réseau

Effectuez une capture de paquets pour analyser le trafic réseau entre votre machine et Amazon S3. Analysez la capture du paquet pour déterminer si le client ou le serveur émet l'indicateur RST.

  • Si votre réseau émet l'indicateur RST, notez l'adresse IP et le processus lors duquel l'indicateur RST est émis. Les processus incluent la recherche DNS, l'établissement de connexion TCP, l'établissement de connexion SSL et le transfert de données.
  • Si votre réseau émet l'indicateur RST lors d'une connexion SSL, assurez-vous que votre machine fait confiance au certificat renvoyé par Amazon.

Déboguer la connexion

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente de l'interface de la ligne de commande AWS.

Exécutez la commande cp de l'interface de ligne de commande AWS depuis l'ordinateur sur lequel vous avez reçu l'erreur pour essayer de vous connecter au compartiment Amazon S3. Incluez l'indicateur --debug dans la commande :

aws s3 cp/sync SOURCE_FILE_PATH/SOURCE_FILE_NAME DESTINATION --debug

Analysez les en-têtes de demande, la méthode de demande et la réponse. Si le problème est intermittent et que quelques demandes aboutissent, vérifiez s'il existe des différences entre une demande réussie et une demande infructueuse.

Vérifiez la sortie de la commande pour vérifier si un proxy dans l'environnement réseau est à l'origine de l'erreur. La sortie indique une erreur de proxy ou un échec de connexion au proxy en cas d'erreurs dues à un proxy HTTP. Si un proxy SSL est à l'origine de l'erreur, l'une des erreurs de réinitialisation de connexion s'affiche lorsque l'établissement de la connexion SSL tente d'être établi.

Vérifiez HTTP Keep-Alive

Activez HTTP Keep-Alive sur votre machine afin que celle-ci utilise une seule connexion TCP pour rester ouverte à plusieurs requêtes et réponses HTTP. Exécutez la commande suivante pour vérifier si TCP Keep-Alive est activé :

curl -Iv s3.amazonaws.com 2>&1 | grep -i 'connection #0'

Lorsque TCP Keep-Alive est activé, la sortie affiche la chaîne suivante :

Connection #0 to host s3.amazonaws.com left intact

Vérifiez les ressources intermédiaires

Les ressources intermédiaires, telles qu'une passerelle NAT, un pare-feu ou un équilibreur de charge, peuvent fermer la connexion prématurément lorsque ces ressources sont très utilisées. Ils peuvent également fermer la connexion prématurément et la marquer comme morte lorsque les données ne sont pas écrites sur ou depuis le fil pendant un certain temps.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an