1. ホーム
  2. web-services

amazon s3への一括アップロードは可能ですか?

2023-10-09 18:18:34

質問

amazon s3 はバッチ アップロードをサポートしていますか? 私は毎晩、最大 1G の ~100K のファイルをアップロードする必要があるジョブがありますが、小さいファイルに強く偏っています (90% は 100 バイト未満、99% は 1000 バイト未満です)。

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

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

どのように解決するのですか?

<ブロッククオート

s3 API は、1 回の HTTP 呼び出しで複数のオブジェクトをアップロードすることをサポートしていますか?

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

あなたは、インストールできる S3ツール をリモートバケットと同期させたいマシンにインストールし、以下のコマンドを実行します。

s3cmd sync localdirectory s3://bucket/

そして、このコマンドをスクリプトに記述し、毎晩このコマンドを実行するスケジュールジョブを作成することができます。

これで望みのものができるはずです。

このツールは MD5 ハッシュとファイルサイズに基づいてファイルの同期を実行するので、衝突はほとんど起こらないはずです (本当に必要なら、ターゲット バケット内のオブジェクトのブラインド上書きを強制する "s3cmd put" コマンドを使用すればよいのです)。

EDIT: また、私がリンクした S3 Tools のサイトのドキュメントを読むことを確認してください。