Aws-cli: O upload de arquivos para S3 a partir de instâncias EC2 falha em alguns tipos de instância

Criado em 6 fev. 2014  ·  41Comentários  ·  Fonte: aws/aws-cli

Temos um problema muito estranho. Estamos carregando arquivos grandes (10M) de uma instância EC2 para um bucket S3 na mesma região. Usamos aws s3 cp para o upload e funções de instância para autenticação.

Se usarmos uma instância m1.small EC2, o upload funciona bem. Mas se aumentarmos o tamanho da instância (tentamos m1.large e m3.large ) o upload falha.

Aqui está o erro que obtemos:

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)

Isso é completamente reproduzível - nunca tivemos um upload desse tipo bem-sucedido após dezenas de tentativas. Nunca vimos o problema em uma instância de m1.small em centenas de tentativas.

Encontramos esse problema com arquivos de 10 milhões. Descobrimos que é reproduzível até cerca de 1M. Muito menos do que isso e funciona bem o tempo todo.

Quaisquer ideias sobre o que está acontecendo seriam muito apreciadas.

bug

Comentários muito úteis

@uldall Se você ainda não resolveu isso, para mim isso foi corrigido instalando a versão mais recente do aws-cli - a versão mais recente do apt-get está desatualizada e então você deve instalar usando pip. Aqui estão as instruções:
https://www.slashroot.in/how-to-install-and-configure-aws-cli-on-ubuntu-16-04

Todos 41 comentários

Qual versão da CLI você está usando? Isso se parece com https://github.com/aws/aws-cli/pull/594 , que foi corrigido em 1.2.11

Na verdade, esse problema era para downloads, este é para uploads, então provavelmente é um problema diferente. Precisarei examinar isso mais detalhadamente. Se você pudesse fornecer um --debug log disso, ajudaria na solução de problemas.

Além disso, aproximadamente quantos arquivos de 10 MB você está enviando de uma vez?

Também estou tendo problemas para fazer upload para o s3, mas do meu laptop (mavericks do OSX). Um arquivo de 424 KB falhou,
e um arquivo de 344 KB funcionou. Estou enviando um arquivo por vez, com as seguintes versões:

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

O erro é o mesmo da postagem 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)

Eu o executei com --debug, e aqui está a parte que fica tentando novamente:

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 a versão 1.2.13. Temos cerca de 200 desses arquivos para carregar, mas estamos fazendo isso em série. O problema sempre acontece no primeiro.

Aqui está o log de depuração da falha solicitada: https://gist.github.com/benbc/8861033.

Existe alguma atualização sobre este problema. Estou vendo exatamente o mesmo problema ao tentar fazer upload para um intervalo recém-criado.

Sim, acredito que isso deve ser corrigido agora na versão 1.3.0. A causa raiz, acredito, é a mesma que https://github.com/aws/aws-cli/issues/544.

Você pode tentar com a versão CLI mais recente. Se você ainda estiver vendo o problema, anexe um --debug logs e eu reabrirei o problema.

Ainda estou tendo esse problema de upload para s3, nem do meu laptop, nem do servidor debian. O arquivo tem cerca de 100 MB. Estou enviando um arquivo por vez, com as seguintes versões:

   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

Aqui está o problema que recebo:

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

Aqui está o log de depuração:

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)

Ainda estou vendo esse problema usando aws cp e aws sync em um novo balde. Os arquivos menores não tiveram problemas, os arquivos maiores falham de maneira confiável conforme descrito aqui e # 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 outros relataram, isso agora está funcionando bem depois que o código TemporaryRedirect é limpo -

$ 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>%

Ainda estou encontrando esse problema com a versão 1.3.4 em um novo intervalo da 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 depuração: https://gist.github.com/anonymous/9814978

Mesmo bug para mim ao usar 'aws s3 sync'
$ aws - versão
aws-cli / 1.3.4 Python / 2.7.3 Linux / 3.2.0-57-virtual

Meu balde está na Irlanda.

log de depuração: https://paste.buntux.org/?c511ef0a27305636#e1/B5RiyBuZq60LHmLNpZt59wz2zDyY2KVdjCM + mO7E =

editar: eu testei em um balde na região "Padrão dos EUA" -> sem problemas
edit2: novo url para registro de depuração https://paste.jeekajoo.eu/?c511ef0a27305636#e1/B5RiyBuZq60LHmLNpZt59wz2zDyY2KVdjCM + mO7E =

Estou reabrindo este problema. Depois de depurar isso, posso confirmar o que outros disseram. Esse problema existe ao tentar fazer upload de um arquivo grande para um intervalo recém-criado que não está na região clássica.

Pelo que posso dizer, o CLI está tentando novamente as solicitações e seguindo 307 redirecionamentos. O problema, entretanto, é que a CLI envia a solicitação _entire_ e, em seguida, aguarda uma resposta. No entanto, S3 enviará imediatamente a resposta 307 antes de terminarmos de enviar o corpo. Eventualmente, ele apenas fechará a conexão e, se ainda estivermos no processo de transmissão do corpo, não veremos a resposta. Em vez disso, obtemos o ConnectionError conforme mostrado nos vários logs de depuração acima.

A maneira normal de resolver isso seria usar o cabeçalho 100 continue. No entanto, o cliente HTTP que usamos (solicitações) não oferece suporte para isso. Pode haver uma maneira de contornar isso, mas vou precisar fazer algumas pesquisas na biblioteca de solicitações para ver a melhor maneira de corrigir esse problema.

Vou atualizar este problema quando souber mais.

Alguma novidade?

meus testes mostram que mesmo quando a biblioteca boto está falhando, o AWS CLI funciona bem. o que o AWS CLI está fazendo de forma diferente?

Eu não acho que haja alguma maneira de contornar na biblioteca de solicitações. Acho que nossa melhor opção (além de escrever nosso próprio cliente HTTP que oferece suporte a esperar 100 continuar) é alguma solução alternativa específica no código S3.

Acabei de bater nisso também. Meu arquivo não é grande, apenas alguns megabytes.

Conseguir isso com um arquivo CSS de 323 KB.

Trabalhar em uma correção para isso será atualizado quando eu tiver mais informações.

Obtendo o mesmo problema ao enviar um arquivo grande (3 GB) para o S3. O upload de um arquivo pequeno está certo.

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)
... 

Minha versão aws;
aws-cli / 1.3.13 Python / 2.7.3 Linux / 3.2.0-61-virtual

Estou tendo um problema semelhante de forma intermitente (cerca de 1 arquivo em cada 20, os arquivos têm cerca de 500 MB) usando a biblioteca de solicitações diretamente, pois estamos trabalhando em nossa API de armazenamento específica. Este é o upload de uma instância 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)

Apenas uma atualização, ainda estou trabalhando nisso. A abordagem mais viável até agora tem sido a subclasse HTTPConnection e tentar implementar a lógica esperar 100-continuar em nossa subclasse. Em seguida, colocamos isso nos pools de conexão do urllib3, que serão captados por solicitações (que é a biblioteca http que usamos).

Portanto, acredito que tenho uma solução potencial, mas precisa de mais testes. Será atualizado quando eu tiver mais informações.

@jamesls assim que você tiver um branch público para testar, eu o usarei :)

Olá,

uma vez que não é explicitamente dito no tópico, você ainda pode usar o comando "aws" para enviar arquivos para outra região especificando o parâmetro --region.

  • Este FALHA
    aws s3 cp ./really_big_file s3: // MY-BUCKET /
  • Este FUNCIONA
    aws --region eu-west-1 s3 cp ./really_big_file s3: // MY-BUCKET /

@ inedit00 Obrigado! Eu não tinha ideia de que isso estava relacionado ao problema.

A correção para isso está aqui: https://github.com/boto/botocore/pull/303

Mas eu gostaria de fazer mais testes nisso. Também quero ver o que o envio do cabeçalho expect 100-continue faz para o perf.

Estamos recebendo esse erro também ao copiar um arquivo grande (~ 3 GB) do local para o S3 (Irlanda). Usando aws-cli / 1.3.17 Python / 2.6.6 Linux / 2.6.32-71.29.1.el6.x86_64 e botocore 0.51.0.

Apenas uma atualização rápida, a correção para isso foi no boto / botocore # 303, no entanto, detectamos uma regressão que estava apenas no python2.6, então tivemos que reverter o PR.

Eu acho que ainda é possível consertar isso, mas será um pouco mais invasivo devido às mudanças internas no httplib de python2.6 para> python2.6. Vou atualizar isso quando tiver mais informações.

Consegui corrigir o problema do python2.6 no PR anterior para corrigir esse problema. Todos os testes estão passando com essa mudança, e posso confirmar que isso corrige o problema de não poder fazer upload de arquivos grandes para buckets S3 não padrão recém-criados. Informe se você ainda está tendo problemas e agradecemos sua paciência enquanto resolvemos esse problema.

Obrigado pela correção @jamesls. Em qual versão do awscli está / estará essa correção?

Isso está disponível na versão mais recente do CLI (v1.3.18).

Além disso, se alguém precisar depurar isso no futuro, você verá os registros de depuração relacionados ao cabeçalho de continuação 100 esperado:

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

Acredito que isso ainda seja um problema para o # 823.

Isso parece um problema diferente. O errno é diferente, em particular.

tenho o mesmo 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

Alcançando o limite de desempenho do AWS s3?
https://stackoverflow.com/questions/23397460/error-handling-boto-error-104-connection-reset-by-peer

Estou tendo o mesmo problema. Este tópico é bastante antigo. Este problema ainda está sendo investigado?

('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

Enfrentou o mesmo problema

`` ``

aws s3 cp /opt/tradetracker/dataStream/tracker-hits-2018-04-30_11:00:00.log s3: // tt-feeder-dumps
upload falhou: ../dataStream/tracker-hits-2018-04-30_11:00:00.log para s3: // tt-feeder-dumps / tracker-hits-2018-04-30_11: 00: 00.log ( 'Conexão abortada.', ConnectionResetError (104, 'Conexão redefinida pelo 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 - versão
aws-cli / 1.11.13 Python / 3.5.2 Linux / 4.4.0-1049-aws botocore / 1.4.70
`` ``

Idem. +1
Tamanho do arquivo: 1G
aws-cli/1.15.12 Python/3.4.3 Linux/4.4.0-71-generic botocore/1.10.12


Para minha configuração, isso foi resolvido definindo:
s3 =
max_concurrent_requests = 5
max_bandwidth = 210 KB / s

no arquivo .aws / config do perfil que eu estava usando. Veja aqui: https://docs.aws.amazon.com/cli/latest/topic/s3-config.html#

Estou tendo o mesmo problema também, quando tentei fazer o upload de um arquivo para o balde s3 usando o pacote boto3 python.

Ele costumava funcionar bem até cerca de 4 dias atrás e, desde então, teve problemas com o upload.

Estou tendo o mesmo problema com um intervalo recém-criado na região eu-west-1.

Comando usado:
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 à rede à qual estou conectado? O upload estava falhando quando eu conectei a um dongle 4G, enquanto que quando eu estava conectado ao meu roteador wi-fi, estava tudo bem.

Mas, o dongle 4G estava me dando velocidade de 10 Mbps. Então, não tenho certeza de onde está o problema

@uldall Se você ainda não resolveu isso, para mim isso foi corrigido instalando a versão mais recente do aws-cli - a versão mais recente do apt-get está desatualizada e então você deve instalar usando pip. Aqui estão as instruções:
https://www.slashroot.in/how-to-install-and-configure-aws-cli-on-ubuntu-16-04

No Ubuntu 18
Instale o 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/

Esta página foi útil?
0 / 5 - 0 avaliações