web-dev-qa-db-ja.com

s3cmdが何度も失敗する

以前は私のお気に入りのバックアップトランスポートエージェントでしたが、今では、同じUbuntuサーバー/ネットワーク上のs3cmdからこの結果を頻繁に取得しています。

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.

これは100MBほどの小さなファイルでも発生するので、サイズの問題ではないと思います。 --acl-privateフラグを指定してputを使用した場合にも発生します(s3cmdバージョン1.0.1)

S3cmdのいくつかのソリューションまたは軽量な代替案を提案していただければ幸いです。

7
alfish

S3cmdがあなたが言及したエラーを返す原因となるいくつかの一般的な問題があります:

  • 存在しない(例:バケット名の入力ミス、またはまだプロビジョニングされていないバケット)
  • 認証値の末尾のスペース(キー/ ID)
  • 不正確なシステムクロック。 Wiresharkを使用して(http接続ではなくhttp接続で)、システムクロックがS3のクロックとどのように一致するかを確認できます。これらは数秒以内に一致するはずです。これが問題である場合は、NTPを使用して時計を同期することを検討してください。

S3cmdの代替:

  • s3cp -a Java S3にファイルを転送するための優れた機能、およびs3cmdよりも詳細なエラーメッセージを提供するベースのスクリプト
  • aws -ほとんどのAWS(S3を含む)関数への簡単なアクセスを提供する、Tim Kayによって書かれたPerlベースのスクリプトで、非常に人気があります。

独自のスクリプトを記述したい場合は、PythonほとんどのAWSオペレーションを実行するための関数があり、オンラインで利用可能な多くの例があるBotoライブラリを使用できます。 project があります=コマンドラインでboto関数の一部を公開します。ただし、現在使用できる関数のセットはごくわずかです。

7
cyberx86

これは私の場合に役立ちました:

  1. 行う s3cmd lsバケット上
  2. リダイレクトに関する警告が表示された
  3. bucket_Host の中に .s3cfg警告からのものを含むファイル。
  4. 繰り返しs3cmd ls、警告は出力されなくなりました
  5. ファイルを再アップロード

私の.s3cfgは次のとおりです:

Host_bucket = %(bucket)s.s3-external-3.amazonaws.com
14
reto

Ubuntuでも同じ問題が発生しましたs3cmdコマンド。

最新の安定したバージョン(1.0.1)をダウンロードすると解決しました: http://sourceforge.net/projects/s3tools/files/s3cmd/

2
Edu

私は同じ問題を抱えており、解決策を見つけました heresamwiseによる応答。

この問題は、IAMの実験を開始したときに発生しました。私の場合、問題はARNにありました。 arn:aws:s3:::bucketname の代わりに arn:aws:s3:::bucketname/*

そのため、$ s3cmd ls s:// bucketnameに問題はありませんでしたが、そこにファイルをアップロードできませんでした((

1
user221341

s3cmd syncでマルチパートアップロードを毎秒アップロードすると、次のエラーで失敗しました:

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

次のアップロードはうまくいきますが、その後、もう一度失敗しました。

--limit-rate=オプションを4mに設定して動作させることで、アップロードが最大4MB/sに制限されるようにしました。

だから完全な設定は

s3cmd sync --limit-rate=4m ...
1
Jan Papenbrock

上記のすべてを試した後、s3cmd putを使用してもスロットルの問題が残っていることに気付きましたが、代わりにs3cmd syncを使用していません。これが誰かにとって迅速な修正に役立つことを願っています:)

1

これは一般的に、.s3cfgファイルのHTTPS設定によっても発生します。

.s3cfgの構成パラメーターを「use_https = False」から「use_https = True」に変更してみてください

AmazonバケットはHttpsにリダイレクトされるため、すべての再試行が行われることに注意してください。私はこの問題を現場でかなり見ています。

0
Marchato