Quando carico o scarico oggetti nel mio bucket Amazon Simple Storage Service (Amazon S3), ricevo uno dei seguenti errori: ConnectionResetError, Connection Aborted o Connection reset by peer.
Risoluzione
Ricevi errori di ripristino della connessione perché l'applicazione non è in grado di connettersi agli endpoint di Amazon S3. Ciò potrebbe dipendere della chiusura dalla connessione o del fatto che la connessione diventa inattiva nel momento dell'accesso alle risorse di S3. Questi errori si verificano a causa di problemi riguardanti l’applicazione o il client layer, il percorso di rete o qualsiasi risorsa intermedia. Per identificare la causa principale del problema, devi individuare il componente che causa l'errore.
Verifica la connettività
Per verificare la connettività, verifica se il computer è in grado di connettersi a S3 tramite HTTP o HTTPS eseguendo questi comandi.
$ telnet mybucket.s3.REGION-CODE.amazonaws.com 80
$ telnet mybucket.s3.REGION-CODE.amazonaws.com 443
Ignora la convalida SSL
Includi il parametro --no-verify-ssl nella richiesta per ignorare la convalida SSL. Il parametro impedisce la convalida dei certificati SSL, ma la richiesta supera la porta 443. In questo modo, puoi isolare i problemi legati alla convalida SSL.
Analizza il traffico di rete
Effettua un'acquisizione di pacchetti per analizzare il traffico di rete tra il computer e Amazon S3. Analizza l'acquisizione dei pacchetti per determinare se il client o il server genera il flag RST.
- Se la rete genera il flag RST, annota l'indirizzo IP e il processo in cui viene generato il flag RST. I processi includono la ricerca DNS, l'handshake TCP, l'handshake SSL e il trasferimento dei dati.
- Se la rete genera il flag RST durante un handshake SSL, assicurati che il computer ritenga attendibile il certificato restituito da Amazon.
Esegui il debug della connessione
Nota: se ricevi errori quando esegui i comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente dell'Interfaccia della linea di comando AWS (AWS CLI).
Esegui il comando AWS CLI cp dal computer su cui hai ricevuto l'errore per provare a connetterti al bucket Amazon S3. Includi il flag --debug nel comando:
aws s3 cp/sync SOURCE_FILE_PATH/SOURCE_FILE_NAME DESTINATION --debug
Analizza le intestazioni delle richieste, il metodo di richiesta e la risposta. Se il problema è intermittente e alcune richieste hanno esito positivo, controlla se ci sono differenze tra una richiesta riuscita e una non riuscita.
Controlla l'output del comando per verificare se un proxy nell'ambiente di rete causa l'errore. L'output indica un errore del proxy o un errore di connessione del proxy per gli errori che si verificano a causa di un proxy HTTP. Se l'errore è causato da un proxy SSL, ricevi uno degli errori di ripristino della connessione quando tenti di stabilire l'handshake SSL.
Controlla la funzionalità HTTP Keep-Alive
Attiva HTTP Keep-Alive sul computer in modo che utilizzi un'unica connessione TCP sempre aperta per più richieste e risposte HTTP. Esegui questo comando per verificare se la funzionalità TCP Keep-Alive è attivata:
curl -Iv s3.amazonaws.com 2>&1 | grep -i 'connection #0'
Quando la funzionalità è attivata, l'output mostra questa stringa:
Connection #0 to host s3.amazonaws.com left intact
Controlla le risorse intermedie
Le risorse intermedie, come un gateway NAT, un firewall o un bilanciatore del carico, potrebbero chiudere prematuramente la connessione quando il loro utilizzo è eccessivo. Inoltre, potrebbero chiudere prematuramente la connessione e contrassegnarla come interrotta quando non vengono scritti dati da o verso la connessione per un certo periodo di tempo.