s3cmd falha muitas vezes

7

Ele costumava ser meu agente de transporte de backup favorito, mas agora eu frequentemente recebo esse resultado do s3cmd no mesmo servidor / rede Ubuntu:

root@server:/home/backups# s3cmd put bkup.tgz s3://mybucket/
bkup.tgz -> s3://mybucket/bkup.tgz  [1 of 1]
      36864 of 2711541519     0% in    1s    20.95 kB/s  failed
WARNING: Upload failed: /bkup.tgz ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=0.00)
WARNING: Waiting 3 sec...
bkup.tgz -> s3://mybucket/bkup.tgz  [1 of 1]
      36864 of 2711541519     0% in    1s    23.96 kB/s  failed
WARNING: Upload failed: /bkup.tgz ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=0.01)
WARNING: Waiting 6 sec...
bkup.tgz -> s3://mybucket/bkup.tgz  [1 of 1]
      28672 of 2711541519     0% in    1s    18.71 kB/s  failed
WARNING: Upload failed: /bkup.tgz ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=0.05)
WARNING: Waiting 9 sec...
bkup.tgz -> s3://mybucket/bkup.tgz  [1 of 1]
      28672 of 2711541519     0% in    1s    18.86 kB/s  failed
WARNING: Upload failed: /bkup.tgz ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=0.25)
WARNING: Waiting 12 sec...
bkup.tgz -> s3://mybucket/bkup.tgz  [1 of 1]
      28672 of 2711541519     0% in    1s    15.79 kB/s  failed
WARNING: Upload failed: /bkup.tgz ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=1.25)
WARNING: Waiting 15 sec...
bkup.tgz -> s3://mybucket/bkup.tgz  [1 of 1]
      12288 of 2711541519     0% in    2s     4.78 kB/s  failed
ERROR: Upload of 'bkup.tgz' failed too many times. Skipping that file.

Isso acontece até mesmo para arquivos de até 100 MB, portanto, suponho que não seja um problema de tamanho. Também acontece quando eu uso put com o sinalizador --acl-private (s3cmd versão 1.0.1)

Agradeço se você sugerir alguma solução ou uma alternativa leve ao s3cmd.

    
por alfish 13.11.2011 / 00:41

7 respostas

7

Existem alguns problemas comuns que resultam em s3cmd retornando o erro que você mencionou:

  • Um nome inexistente (por exemplo, nome do intervalo digitado; ou um intervalo que ainda não foi provisionado)
  • Trailing espaços em seus valores de autenticação (chave / id)
  • Um relógio do sistema impreciso. É possível usar o Wireshark (através de uma conexão http - não https) para ver como o relógio do seu sistema está alinhado com o relógio do S3 - eles devem combinar dentro de alguns segundos. Considere usar o NTP para sincronizar seu relógio se isso for um problema.

Alternativas para s3cmd:

  • s3cp - um script baseado em Java que oferece boa funcionalidade para transferir arquivos para o S3 e mais mensagens de erro detalhadas s3cmd
  • aws - um script baseado em Perl, escrito por Tim Kay, que fornece fácil acesso à maioria das funções da AWS (incluindo S3), e é bastante popular .

Se você deseja escrever seu próprio script, é possível usar a biblioteca Pyoto Boto, que tem funções para executar a maioria das operações da AWS e tem muitos exemplos disponíveis on-line. Existe um projeto que expõe algumas das funções boto na linha de comando - embora, um conjunto muito pequeno de funções seja atualmente disponível.

    
por 13.11.2011 / 20:22
14

Isso ajudou no meu caso:

  1. do s3cmd ls no intervalo
  2. imprimiu um aviso sobre um redirecionamento
  3. substitua o bucket_host no arquivo .s3cfg pelo arquivo do aviso.
  4. repita s3cmd ls , não será mais necessário imprimir um aviso
  5. reupload de arquivo

meu .s3cfg agora é:

host_bucket = %(bucket)s.s3-external-3.amazonaws.com
    
por 21.02.2013 / 12:04
2

Eu tive o mesmo problema com o comando% s3cmd do Ubuntu.

Baixando a última versão estável (1.0.1) resolveu: link

    
por 19.03.2012 / 14:24
1

Após ter tentado todas as coisas acima, notei que ainda estou tendo o problema de limitação usando s3cmd put, mas não usando s3cmd sync. Espero que isso possa ser útil para alguém para uma solução rápida:)

    
por 18.12.2013 / 13:08
1

Eu tive o mesmo problema e encontrei uma solução aqui em resposta a samwise .

Esse problema apareceu quando iniciei experimentos com o IAM. No meu caso, o problema estava no ARN. Eu listei arn:aws:s3:::bucketname em vez de arn:aws:s3:::bucketname/*

É por isso que não tive problemas com $ s3cmd ls s: // bucketname, mas não pude carregar nenhum arquivo lá ((

    
por 26.06.2014 / 10:51
1

Eu tive cada segundo upload de upload em várias partes com s3cmd sync com este erro:

WARNING: Upload failed: /large-file.gz?partNumber=13&uploadId=FOOBAR ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=0.00)
WARNING: Waiting 3 sec...

O próximo upload funcionaria muito bem, mas um falha novamente e assim por diante.

Eu consegui trabalhar com a opção --limit-rate= definida como 4m para que os uploads sejam limitados a no máximo 4MB / s.

Portanto, a configuração completa é

s3cmd sync --limit-rate=4m ...
    
por 02.09.2016 / 08:44
0

Isso também é comumente causado pelas configurações de HTTPS do seu arquivo .s3cfg.

Tente alterar o parâmetro de configuração de "use_https = False" para "use_https = True" no .s3cfg

Lembre-se de que os buckets da Amazon redirecionam para o Https e, portanto, todas as novas tentativas. Eu vejo esta questão um pouco no campo.

    
por 11.11.2015 / 18:12