2013-02-24 6 views
39

amazon s3はバッチアップロードをサポートしていますか? 私は毎晩アップロードする必要がある仕事があります。最大100Gのファイルを1Gにすることができますが、小さなファイル(90%は100バイト未満、99%は1000バイト未満)に大きく歪んでいます。amazon s3にバッチアップロードを実行することはできますか?

s3 APIは、単一のHTTPコールで複数のオブジェクトをアップロードすることをサポートしていますか?

すべてのオブジェクトは、S3で個々のオブジェクトとして利用可能でなければなりません。私は他の場所(FTPなど)でも別の形式(データベース、EC2ローカルドライブなど)でもホストすることはできません。それは私が変更できない外部要件です。

+2

偉大な質問を使用することによって、自分でマルチスレッドを記述することなく、効率的に複数のファイルのアップロードをサポートしています!好奇心から、あなたが何をしようとしているのか、なぜこれらのファイルが何であるのか、私たちに教えてください。 –

+0

私はこれらの質問をしても大丈夫ですか? –

+0

私はなぜそのような要件が表示されるのだろうかと思います。一度にすべてのファイルを置き換える必要がある場合は、それらを一時的なバケットに定期的にアップロードしてバケット名を変更する方法がありますか? –

答えて

23

s3 APIは、単一のHTTPコールで複数のオブジェクトをアップロードすることをサポートしていますか?

いいえ、the S3 PUT operationは、HTTPリクエストごとに1つのオブジェクトのアップロードのみをサポートします。

あなたは、リモート・バケットと同期して、次のコマンドを実行したいマシンにS3 Toolsをインストールできます。そして、あなたはスクリプトでこのコマンドを配置して実行するようにスケジュールされたジョブを作成することができ

s3cmd sync localdirectory s3://bucket/ 

毎晩このコマンドを実行します。

これは、必要な操作を行う必要があります。

このツールは、MD5ハッシュとファイルサイズに基づいてファイルの同期を実行するので、衝突はほとんどありません(「s3cmd put」コマンドを使用してターゲットバケット内のオブジェクトのブラインド上書きを強制したい場合)。

EDIT:また、あなたは、私はS3のツールのリンク先サイト上のドキュメントを読んでいることを確認してください - あなたがローカルで削除されたファイルは、別の方法として

+7

このメソッドは、依然として個々のput操作を使用しており、本質的に他のものより高速ではありません。答えは受け入れられましたが、あなたがしたのはコード内でできることと同じことをするツールを指しているようです。 – bridiver

+0

あなたはノードapiから同期することもできます - ノードs3-clientをチェックアウト –

+0

s3cmdは継続使用のためにライセンスを必要とします – Adder

28

をバケットから削除されるかなどを無視するかどうかのために必要なさまざまなフラグがありますsyncコマンドを使用してAWS CLI tool経由でS3をアップロードできます。

AWS S3の同期local_folder S3://バケット名

あなたは非常に高速なバッチアップロードファイルをS3にこの方法を使用することができます。

+6

前の回答と同じように、これらのツールはどうにかしてさもなければ、APIで達成されていると私は信じていません。 – bridiver

+0

現在、AWS CLIツールを使用してローカルディレクトリとS3バケットを同期しています。私はblat.exe経由で誰かにメールすることができるローカルTXTファイルに "アップロード"または同期結果を出力するために使用できる引数またはパラメータがあるかどうかを知りたいと思います。 これはすべて、他のサーバーによってダウンロードされる数千のファイルのスケジュールされた同期のためのバッチファイルに入れられます。 (S3バケットをクラウドソースとして使用して、ソースサーバーのアップロード速度の問題を克服する) –

0

つのファイル(またはファイルの一部)= 1件のHTTPリクエストが、JavaのAPIは現在TransferManager

関連する問題