Aws-cli: La carga de archivos a S3 desde instancias EC2 falla en algunos tipos de instancias

Creado en 6 feb. 2014  ·  41Comentarios  ·  Fuente: aws/aws-cli

Tenemos un problema muy extraño. Estamos cargando archivos grandes (10M) desde una instancia EC2 a un bucket de S3 en la misma región. Usamos aws s3 cp para los roles de carga e instancia para la autenticación.

Si usamos una instancia m1.small EC2, la carga funciona bien. Pero si aumentamos el tamaño de la instancia (hemos probado m1.large y m3.large ) la carga falla.

Aquí está el error que obtenemos:

upload failed: <file> to <s3-address>
HTTPSConnectionPool(host='<bucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: <s2-key>?partNumber=2&uploadId=Hw6FZhXeH03ZzzCtxu2XcsspmpN2lx83GxWGzrJ96I81XlajjjNCxsSj0vs0BIbf_xJmzfdZwZY_UzUL3NCT57rpqEwIuLD1qryr7KKjlR6rA0YIW_ltopZQkoo32i0qTPUAlBc55WRAYxjwJ8Iw1A-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)

Esto es completamente reproducible: nunca hemos tenido una carga de este tipo con éxito después de decenas de intentos. Nunca hemos visto el problema en una instancia m1.small en cientos de intentos.

Nos encontramos con este problema con archivos de 10M. Hemos descubierto que es reproducible hasta aproximadamente 1M. Mucho menos que esto y siempre funciona bien.

Cualquier idea sobre lo que está sucediendo será muy apreciada.

bug

Comentario más útil

@uldall Si aún no lo ha resuelto, para mí esto se solucionó instalando la última versión de aws-cli; la última versión de apt-get está desactualizada y, por lo tanto, debe instalar usando pip. Aquí están las instrucciones:
https://www.slashroot.in/how-to-install-and-configure-aws-cli-on-ubuntu-16-04

Todos 41 comentarios

¿Qué versión de la CLI estás usando? Esto se parece a https://github.com/aws/aws-cli/pull/594 , que se corrigió en 1.2.11

En realidad, ese problema era para las descargas, este es para las cargas, por lo que probablemente sea un problema diferente. Necesitaré investigar esto más a fondo. Si pudiera proporcionar un registro --debug de esto, ayudaría en la resolución de problemas.

Además, ¿cuántos archivos de 10 millones aproximadamente está cargando a la vez?

También tengo problemas para cargar a s3, pero desde mi computadora portátil (OSX mavericks). Error en un archivo de 424 KB,
y un archivo de 344KB funcionó. Subo un archivo a la vez, con las siguientes versiones:

awscli==1.2.13
boto==2.24.0
botocore==0.33.0

El error es el mismo que en la publicación original:

upload failed: ./test to s3://<bucket>/deploys/test HTTPSConnectionPool(host='bnch.s3.amazonaws.com', port=443): Max retries exceeded with url: /deploys/test (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)

Lo ejecuté con --debug, y aquí está la parte que sigue reintentando:

2014-02-06 21:20:17,138 - botocore.retryhandler - DEBUG - Retry needed, action of: 3.28890874908
2014-02-06 21:20:17,138 - botocore.endpoint - DEBUG - Response received to retry, sleeping for 3.28890874908 seconds
2014-02-06 21:20:20,428 - botocore.awsrequest - DEBUG - Rewinding stream: <open file u'<redacted>/test', mode 'rb' at 0x101dc6c90>
2014-02-06 21:20:20,428 - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [PUT]>
2014-02-06 21:20:20,429 - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTPS connection (4): <bucket>.s3.amazonaws.com
2014-02-06 21:20:21,693 - botocore.hooks - DEBUG - Event needs-retry.s3.PutObject: calling handler <botocore.retryhandler.RetryHandler object at 0x101e0d550>
2014-02-06 21:20:21,693 - botocore.retryhandler - DEBUG - retry needed, retryable exception caught: HTTPSConnectionPool(host='<bucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /deploys/test (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)
Traceback (most recent call last):
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 262, in _should_retry
    return self._checker(attempt_number, response, caught_exception)
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 310, in __call__
    caught_exception)
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 219, in __call__
    return self._check_caught_exception(attempt_number, caught_exception)
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 352, in _check_caught_exception
    raise caught_exception
ConnectionError: HTTPSConnectionPool(host='<bucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /deploys/test (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)
2014-02-06 21:20:21,693 - botocore.retryhandler - DEBUG - Retry needed, action of: 2.598356941
2014-02-06 21:20:21,693 - botocore.endpoint - DEBUG - Response received to retry, sleeping for 2.598356941 seconds
2014-02-06 21:20:24,293 - botocore.awsrequest - DEBUG - Rewinding stream: <open file u'<redacted>/test', mode 'rb' at 0x101dc6c90>
2014-02-06 21:20:24,293 - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [PUT]>
2014-02-06 21:20:24,294 - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTPS connection (5): <bucket>.s3.amazonaws.com
2014-02-06 21:20:25,888 - botocore.hooks - DEBUG - Event needs-retry.s3.PutObject: calling handler <botocore.retryhandler.RetryHandler object at 0x101e0d550>
2014-02-06 21:20:25,888 - awscli.customizations.s3.tasks - DEBUG - <redacted>/test upload failure: HTTPSConnectionPool(host='<bucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /deploys/test (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)
2014-02-06 21:20:25,888 - botocore.operation - DEBUG - Operation:PutObject called with kwargs: {'body': <open file u'<redacted>/test', mode 'rb' at 0x101e61d20>, 'bucket': u'<bucket>', 'key': u'deploys/test'}
2014-02-06 21:20:25,889 - botocore.endpoint - DEBUG - Making request for Operation:PutObject (verify_ssl=True) with params: {'headers': {}, 'uri_params': {u'Bucket': u'<bucket>', u'Key': u'deploys/test'}, 'payload': <botocore.payload.Payload object at 0x101fc3ed0>}
2014-02-06 21:20:25,889 - botocore.endpoint - DEBUG - Building URI for rest endpoint.
2014-02-06 21:20:25,889 - botocore.endpoint - DEBUG - Templated URI path: /{Bucket}/{Key}
2014-02-06 21:20:25,889 - botocore.endpoint - DEBUG - Templated URI query_params:
2014-02-06 21:20:25,889 - botocore.endpoint - DEBUG - Rendered path: /<bucket>/deploys/test
2014-02-06 21:20:25,889 - botocore.endpoint - DEBUG - Rendered query_params:
2014-02-06 21:20:25,890 - botocore.hooks - DEBUG - Event before-auth.s3: calling handler <function fix_s3_host at 0x101b24410>
2014-02-06 21:20:25,890 - botocore.handlers - DEBUG - Checking for DNS compatible bucket for: https://s3-us-west-2.amazonaws.com/<bucket>/deploys/test
2014-02-06 21:20:25,890 - botocore.handlers - DEBUG - URI updated to: https://<bucket>.s3.amazonaws.com/deploys/test
2014-02-06 21:20:25,890 - botocore.auth - DEBUG - Calculating signature using hmacv1 auth.
2014-02-06 21:20:25,890 - botocore.auth - DEBUG - HTTP request method: PUT
2014-02-06 21:20:25,890 - botocore.auth - DEBUG - StringToSign:
PUT


Fri, 07 Feb 2014 05:20:25 GMT
/<bucket>/deploys/test
2014-02-06 21:20:25,891 - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [PUT]>
2014-02-06 21:20:25,891 - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTPS connection (6): <bucket>.s3.amazonaws.com
2014-02-06 21:20:27,373 - botocore.hooks - DEBUG - Event needs-retry.s3.PutObject: calling handler <botocore.retryhandler.RetryHandler object at 0x101e0d550>
2014-02-06 21:20:27,374 - botocore.retryhandler - DEBUG - retry needed, retryable exception caught: HTTPSConnectionPool(host='<bucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /deploys/test (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)
Traceback (most recent call last):
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 262, in _should_retry
    return self._checker(attempt_number, response, caught_exception)
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 310, in __call__
    caught_exception)
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 219, in __call__
    return self._check_caught_exception(attempt_number, caught_exception)
  File "<redacted>/lib/python2.7/site-packages/botocore/retryhandler.py", line 352, in _check_caught_exception
    raise caught_exception
ConnectionError: HTTPSConnectionPool(host='<bucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /deploys/test (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)
2014-02-06 21:20:27,374 - botocore.retryhandler - DEBUG - Retry needed, action of: 0.627294998584
2014-02-06 21:20:27,374 - botocore.endpoint - DEBUG - Response received to retry, sleeping for 0.627294998584 seconds

Estamos usando la versión 1.2.13. Tenemos alrededor de 200 de estos archivos para cargar, pero lo estamos haciendo en serie. El problema siempre ocurre en el primero.

Aquí está el registro de depuración del error que solicitó: https://gist.github.com/benbc/8861033.

¿Hay alguna actualización sobre este tema? Veo exactamente el mismo problema al intentar cargar en un depósito recién creado.

Sí, creo que esto debería solucionarse ahora en la versión 1.3.0. Creo que la causa raíz es la misma que https://github.com/aws/aws-cli/issues/544.

¿Puedes probar con la última versión de CLI? Si sigues viendo el problema, adjunta un --debug logs y lo volveré a solucionar.

Sigo teniendo este problema de carga a s3, ni desde mi computadora portátil ni desde el servidor Debian. El archivo es de aproximadamente 100 MB. Subo un archivo a la vez, con las siguientes versiones:

   aws-cli/1.3.1 Python/2.7.3 Linux/3.2.0-4-amd64
   aws-cli/1.3.1 Python/2.7.5 Darwin/13.0.0

Aquí está el problema que obtengo:

Max retries exceeded with url: <myfile>?partNumber=13&uploadId=bR1a29GdR1Qb0CW4fSDv9Vvi4PKJLF3eizWErF1SGvuMxUAh4vmHLmVQ7XjVSsFGmQi0N1U8KX5dR1uukEAMaAS8JxoQA89nJN2FFmQu2MRzIlrIzeMr4re5Zwvn3Hvv.n9IKm.OXOqy4NN87yohIA-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)

Aquí está el registro de depuración:

Wed, 19 Mar 2014 03:28:03 GMT
/<mybucket>/<myfile>?partNumber=9&uploadId=psq_ysXJSW9eplwLTW97ueGw1BMzG2qEXVoP9XiQsm06RP0_N_J_qPS1vZf4OOj0W33Bwdey2w4KNsbEltH_GIWO3jOQbcP64MEfTMd.OSUVsmZKsMIWCxZoqdbmspb1bD0YzAbG92F9R8pQQrXdkA--
2014-03-19 11:28:03,343 - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [PUT]>
partNumber=8&uploadId=psq_ysXJSW9eplwLTW97ueGw1BMzG2qEXVoP9XiQsm06RP0_N_J_qPS1vZf4OOj0W33Bwdey2w4KNsbEltH_GIWO3jOQbcP64MEfTMd.OSUVsmZKsMIWCxZoqdbmspb1bD0YzAbG92F9R8pQQrXdkA-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 262, in _should_retry
    return self._checker(attempt_number, response, caught_exception)
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 310, in __call__
    caught_exception)
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 219, in __call__
    return self._check_caught_exception(attempt_number, caught_exception)
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 352, in _check_caught_exception
    raise caught_exception
ConnectionError: HTTPSConnectionPool(host='<mybucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /<myfile>?partNumber=8&uploadId=psq_ysXJSW9eplwLTW97ueGw1BMzG2qEXVoP9XiQsm06RP0_N_J_qPS1vZf4OOj0W33Bwdey2w4KNsbEltH_GIWO3jOQbcP64MEfTMd.OSUVsmZKsMIWCxZoqdbmspb1bD0YzAbG92F9R8pQQrXdkA-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)
2014-03-19 11:28:05,374 - botocore.retryhandler - DEBUG - Retry needed, action of: 0.41042383996
2014-03-19 11:28:05,374 - botocore.endpoint - DEBUG - Response received to retry, sleeping for 0.41042383996 seconds
2014-03-19 11:28:05,579 - botocore.hooks - DEBUG - Event needs-retry.s3.UploadPart: calling handler <botocore.retryhandler.RetryHandler object at 0x308bfd0>
2014-03-19 11:28:05,580 - botocore.retryhandler - DEBUG - retry needed, retryable exception caught: HTTPSConnectionPool(host=<mybucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /<myfile>?partNumber=1&uploadId=psq_ysXJSW9eplwLTW97ueGw1BMzG2qEXVoP9XiQsm06RP0_N_J_qPS1vZf4OOj0W33Bwdey2w4KNsbEltH_GIWO3jOQbcP64MEfTMd.OSUVsmZKsMIWCxZoqdbmspb1bD0YzAbG92F9R8pQQrXdkA-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 262, in _should_retry
    return self._checker(attempt_number, response, caught_exception)
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 310, in __call__
    caught_exception)
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 219, in __call__
    return self._check_caught_exception(attempt_number, caught_exception)
  File "/usr/local/lib/python2.7/dist-packages/botocore/retryhandler.py", line 352, in _check_caught_exception
    raise caught_exception
ConnectionError: HTTPSConnectionPool(host='<mybucket>.s3.amazonaws.com', port=443): Max retries exceeded with url: /<myfile>?partNumber=1&uploadId=psq_ysXJSW9eplwLTW97ueGw1BMzG2qEXVoP9XiQsm06RP0_N_J_qPS1vZf4OOj0W33Bwdey2w4KNsbEltH_GIWO3jOQbcP64MEfTMd.OSUVsmZKsMIWCxZoqdbmspb1bD0YzAbG92F9R8pQQrXdkA-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)

Sigo viendo este problema usando aws cp y aws sync en un nuevo depósito. Los archivos más pequeños no tuvieron problemas, los archivos más grandes fallan de manera confiable como se describe aquí y # 544

aws --version
aws-cli/1.3.3 Python/2.7.5+ Linux/3.8.0-35-generic
>>> print botocore.__version__
>>> 0.37.0
upload failed: ./file.tar.gz to s3://mybucket/file.tar.gz
HTTPSConnectionPool(host='mybucket.s3.amazonaws.com', port=443): Max retries exceeded with url: /file.tar.gz?partNumber=... (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)
curl https://mybucket.s3.amazonaws.com
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><RequestId>...</RequestId><Bucket>mybucket</Bucket><HostId>...</HostId><Endpoint>mybucket.s3-us-west-1.amazonaws.com</Endpoint></Error>

Como otros han informado, esto ahora funciona bien después de que se borra el código TemporaryRedirect:

$ curl https://mybucket.s3.amazonaws.com
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>...</RequestId><HostId>...</HostId></Error>%

Todavía tengo este problema con la versión 1.3.4 en un nuevo depósito de Irlanda.

ubuntu@ip-172-31-40-164:~$ aws --version
aws-cli/1.3.4 Python/2.7.5+ Linux/3.11.0-15-generic

Registro de depuración: https://gist.github.com/anonymous/9814978

El mismo error para mí cuando uso 'aws s3 sync'
$ aws --versión
aws-cli / 1.3.4 Python / 2.7.3 Linux / 3.2.0-57-virtual

Mi cubo está en Irlanda.

registro de depuración: https://paste.buntux.org/?c511ef0a27305636#e1/B5RiyBuZq60LHmLNpZt59wz2zDyY2KVdjCM + mO7E =

editar: Probé en un depósito en la región "Estándar de EE. UU." -> no hay problema
edit2: nueva URL para el registro de depuración https://paste.jeekajoo.eu/?c511ef0a27305636#e1/B5RiyBuZq60LHmLNpZt59wz2zDyY2KVdjCM + mO7E =

Reabriré este problema. Después de depurar esto, puedo confirmar lo que otros han dicho. Este problema existe al intentar cargar un archivo grande en un depósito recién creado que no está en la región clásica.

Por lo que puedo decir, la CLI está reintentando correctamente las solicitudes y siguiendo las redirecciones 307. Sin embargo, el problema es que la CLI envía la solicitud _entire_ y luego espera una respuesta. Sin embargo, S3 enviará inmediatamente la respuesta 307 antes de que terminemos de enviar el cuerpo. Eventualmente, simplemente cerrará la conexión, y si todavía estamos en el proceso de transmitir el cuerpo, no veremos la respuesta. En su lugar, obtenemos ConnectionError como se muestra en los diversos registros de depuración anteriores.

La forma normal de abordar esto sería utilizar el encabezado de continuación de espera 100. Sin embargo, el cliente HTTP que usamos (solicitudes) no admite esto. Puede haber una forma de solucionar este problema, pero tendré que investigar un poco la biblioteca de solicitudes para ver la mejor manera de solucionar este problema.

Actualizaré este problema cuando sepa más.

¿Hay noticias?

Mis pruebas muestran que incluso cuando la biblioteca boto falla, la AWS CLI funciona bien. ¿Qué hace la AWS CLI de manera diferente?

No creo que haya ninguna forma de solucionarlo en la biblioteca de solicitudes. Creo que nuestra mejor opción (además de escribir nuestro propio cliente HTTP que admita esperar 100 continue) es una solución alternativa específica en el código S3.

Acabo de golpear esto también. Mi archivo no es grande, solo unos pocos megabytes.

Obteniendo esto con un archivo CSS de 323KB.

Trabajando en una solución para esto, se actualizará cuando tenga más información.

Obteniendo el mismo problema al cargar un archivo grande (3GB) en S3. Cargar un archivo pequeño está bien.

upload failed: ../../tmp/anonymousAction.log.2014-05-12.tokyo1b-http-4-1.20140513T003001 to s3://between-data-analysis-temp/anonymousAction.log.2014-05-12.tokyo1b-http-4-1.20140513T003001
HTTPSConnectionPool(host='between-data-analysis-temp.s3.amazonaws.com', port=443): Max retries exceeded with url: /anonymousAction.log.2014-05-12.tokyo1b-http-4-1.20140513T003001?partNumber=6&uploadId=Wdj8309FlXToB8mXw6JHnz8Xf8f4ADIC2SiaM3a6foSDJXH9t7xLk2uFK_EgTtjMn.OyCWdTJjP9al3rgISEltpMwj9j77Irfjc5wqssG2zgnUKhXM2gEUU5QfAuH0kuJNg8deDipYvwBkE0r7k3Qw-- (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)
... 

Mi versión de AWS;
aws-cli / 1.3.13 Python / 2.7.3 Linux / 3.2.0-61-virtual

Recibo un problema similar de forma intermitente (aproximadamente 1 archivo de cada 20, los archivos tienen alrededor de 500 MB) usando la biblioteca de solicitudes directamente mientras trabajamos a través de nuestra API de almacenamiento específica. Esto se carga desde una instancia EC2.

  File "/data/opi/upload.py", line 174, in upload
    response = requests.put(url, data=data, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests-2.1.0-py2.7.egg/requests /api.py", line 99, in put
    return request('put', url, data=data, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests-2.1.0-py2.7.egg/requests /api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests-2.1.0-py2.7.egg/requests /sessions.py", line 382, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests-2.1.0-py2.7.egg/requests /sessions.py", line 485, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests-2.1.0-py2.7.egg/requests /adapters.py", line 372, in send
    raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='our-bucket.s3.amazonaws.com', port=443): Max retries exceeded with url: /folder/subfolder/filename?Signature=XXX&Expires=1401262800&AWSAccessKeyId=YYY -amz-acl=private (Caused by <class 'socket.error'>: [Errno 104] Connection reset  by peer)

Solo una actualización, todavía estoy trabajando en esto. El enfoque más viable hasta ahora ha sido la subclase HTTPConnection e intentar implementar la lógica de esperar 100-continuar en nuestra subclase. Luego, lo conectaríamos a los grupos de conexiones de urllib3, que serán recogidos por las solicitudes (que es la biblioteca http que usamos).

Entonces creo que tengo una solución potencial, pero necesita más pruebas. Lo actualizaré cuando tenga más información.

@jamesls tan pronto como tengas una rama pública para probar, la

Hola,

ya que no se dice explícitamente en el hilo, aún puede usar el comando "aws" para cargar archivos a otra región especificando el parámetro --region.

  • Este falla
    aws s3 cp ./really_big_file s3: // MI-CUCHARÓN /
  • Este FUNCIONA
    aws --region eu-west-1 s3 cp ./really_big_file s3: // MY-BUCKET /

@ inedit00 ¡Gracias! No tenía idea de que esto estaba relacionado con el problema.

La solución para esto está aquí: https://github.com/boto/botocore/pull/303

Pero me gustaría hacer más pruebas sobre esto. También quiero ver qué hace el envío del encabezado esperado 100-continue a perf.

También recibimos este error al copiar un archivo grande (~ 3GB) de local a S3 (Irlanda). Usando aws-cli / 1.3.17 Python / 2.6.6 Linux / 2.6.32-71.29.1.el6.x86_64 y botocore 0.51.0.

Solo una actualización rápida, la solución para esto estaba en boto / botocore # 303, sin embargo, detectamos una regresión que solo estaba en python2.6, por lo que tuvimos que revertir el PR.

Creo que todavía es posible arreglar esto, pero será un poco más invasivo debido a los cambios internos en httplib de python2.6 a> python2.6. Actualizaré esto cuando tenga más información.

Pude solucionar el problema de python2.6 en el PR anterior para solucionar este problema. Todas las pruebas están pasando con este cambio, y puedo confirmar que esto soluciona el problema de no poder cargar archivos grandes en depósitos S3 no estándar recién creados. Si sigues teniendo problemas, avísame y gracias por tu paciencia mientras solucionamos este problema.

Gracias por la corrección @jamesls. ¿En qué versión de awscli se encuentra / estará esta solución?

Está disponible en la última versión de la CLI (v1.3.18).

Además, si alguien necesita depurar esto en el futuro, verá registros de depuración relacionados con el encabezado de la continuación de la expectativa 100:

2014-06-23 10:40:32,495 - Thread-4 - botocore.hooks - DEBUG - Event before-call.s3.UploadPart: calling handler <function add_expect_header at 0x10d3469b0>
2014-06-23 10:40:32,495 - Thread-4 - botocore.handlers - DEBUG - Adding expect 100 continue header to request.
2014-06-23 10:40:32,500 - Thread-4 - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [PUT]>
2014-06-23 10:40:32,502 - Thread-4 - botocore.awsrequest - DEBUG - Waiting for 100 Continue response.
2014-06-23 10:40:32,506 - Thread-4 - botocore.awsrequest - DEBUG - Received a non 100 Continue response from the server, NOT sending request body.
2014-06-23 10:40:32,512 - Thread-4 - botocore.awsrequest - DEBUG - Redirect received, rewinding stream: <awscli.customizations.s3.utils.ReadFileChunk object at 0x10d7f1450>
2014-06-23 10:40:32,512 - Thread-4 - botocore.awsrequest - DEBUG - Rewinding stream: <awscli.customizations.s3.utils.ReadFileChunk object at 0x10d7f1450>
2014-06-23 10:40:32,513 - Thread-4 - botocore.awsrequest - DEBUG - Waiting for 100 Continue response.
2014-06-23 10:40:32,533 - Thread-4 - botocore.awsrequest - DEBUG - 100 Continue response seen, now sending request body.
...
2014-06-23 10:40:34,530 - Thread-4 - awscli.errorhandler - DEBUG - HTTP Response Code: 200

Creo que esto sigue siendo un problema según el # 823.

Parece un problema diferente. El errno es diferente, en particular.

tiene el mismo problema.

upload failed: images1/1103/142_b2d35e8005321b582ce891ca835df65d_75.jpg to s3://opgirl-v2/images/images1/1103/142_b2d35e8005321b582ce891ca835df65d_75.jpg A client error (RequestTimeout) occurred when calling the PutObject operation: Your socket connection to the server was not read from or written to within the timeout period. Idle connections will be closed.
Cleaning up. Please wait...
upload failed: images1/1103/142_d0754d4c8708dc2d7c68cc27da2ad2fa_100.jpg to s3://opgirl-v2/images/images1/1103/142_d0754d4c8708dc2d7c68cc27da2ad2fa_100.jpg The write operation timed out
upload failed: images1/1103/1430_0a6a493f08b693789cba32fbbc6ade83_75.jpg to s3://opgirl-v2/images/images1/1103/1430_0a6a493f08b693789cba32fbbc6ade83_75.jpg ('Connection aborted.', error(104, 'Connection reset by peer'))
# aws --version
aws-cli/1.9.15 Python/2.6.6 Linux/3.2.0-0.bpo.1-amd64 botocore/1.3.15

¿Alcanza el límite de rendimiento de AWS s3?
https://stackoverflow.com/questions/23397460/error-handling-boto-error-104-connection-reset-by-peer

Estoy experimentando el mismo problema. Este hilo es bastante antiguo. ¿Se sigue investigando este problema?

('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

# aws --version aws-cli/1.11.13 Python/3.5.2 Linux/4.4.0-1055-aws botocore/1.4.70

Enfrentó el mismo problema

`` ``

aws s3 cp /opt/tradetracker/dataStream/tracker-hits-2018-04-30_11:00:00.log s3: // tt-feeder-dumps
error de carga: ../dataStream/tracker-hits-2018-04-30_11:00:00.log a s3: // tt-feeder-dumps / tracker-hits-2018-04-30_11: 00: 00.log ( 'Conexión cancelada', ConnectionResetError (104, 'Conexión restablecida por par'))

ls -hal /opt/tradetracker/dataStream/tracker-hits-2018-04-30_11:00:00.log
-rw-rw-rw- 1 www-data www-data 13M 30 de abril 13:56 /opt/tradetracker/dataStream/tracker-hits-2018-04-30_11:00:00.log

aws --versión
aws-cli / 1.11.13 Python / 3.5.2 Linux / 4.4.0-1049-aws botocore / 1.4.70
`` ``

Ídem. +1
Tamaño de archivo: 1G
aws-cli/1.15.12 Python/3.4.3 Linux/4.4.0-71-generic botocore/1.10.12


Para mi configuración, esto se resolvió configurando:
s3 =
max_concurrent_requests = 5
max_bandwidth = 210KB / s

en el archivo .aws / config para el perfil que estaba usando. Vea aquí: https://docs.aws.amazon.com/cli/latest/topic/s3-config.html#

También tengo el mismo problema cuando intenté cargar un archivo en el depósito s3 usando el paquete boto3 python.

Solía ​​funcionar bien hasta hace unos 4 días, y desde entonces ha tenido problemas con la carga.

Tengo el mismo problema con un depósito recién creado en la región eu-west-1.

Comando utilizado:
aws s3 sync . s3://<bucket_name> --profile test --region eu-west-1

$ aws --version
aws-cli/1.11.13 Python/3.5.2 Linux/4.13.0-45-generic botocore/1.4.70

¿Este problema está relacionado con la red a la que estoy conectado? La carga fallaba cuando me había conectado a un dongle 4G, mientras que cuando estaba conectado a mi enrutador wifi, todo estaba bien.

Pero, el dongle 4G me estaba dando una velocidad de 10 Mbps. Entonces, no estoy seguro de dónde está el problema

@uldall Si aún no lo ha resuelto, para mí esto se solucionó instalando la última versión de aws-cli; la última versión de apt-get está desactualizada y, por lo tanto, debe instalar usando pip. Aquí están las instrucciones:
https://www.slashroot.in/how-to-install-and-configure-aws-cli-on-ubuntu-16-04

En ubuntu 18
Instalar Python 3
sudo apt-get install python3-pip
pip3 install awscli --upgrade --user
aws s3 sync ./ s3: // mybucket01

https://linuxhint.com/install_aws_cli_ubuntu/
https://linuxhint.com/install_aws_cli_ubuntu/

¿Fue útil esta página
0 / 5 - 0 calificaciones