2012-03-15 84 views
14

Amazon S3に1時間ごとに多数の小さなファイルをアップロードするCodeigniter Webアプリケーションがあります.S3のリクエスト料金が急上昇しています。これを克服する1つの方法は、ファイルを解凍し、S3にZIPファイルをアップロードし、S3上にあるときに解凍することです。S3にZIPファイルをアップロードしてEC2を使用して解凍する

EC2を使用してこれを行うことはできますか?または、これを達成するためのより良い方法がありますか?ありがとうございました!!

EDIT:EC2を使用する場合は、PHPを使用してEC2インスタンスの作成をトリガーし、ZIPファイルの解凍に必要なPHPファイルをアップロードし、圧縮されていないファイルをS3にコピーしてからEC2インスタンスを破棄しますか?

+0

あなたはS3にZIPファイルを保存することができませんか? –

+0

S3で解凍された個々のファイルを利用できるようにしたい。それを(100個の小さなファイルを1つのzipファイルに)圧縮する理由は、 'PUT'要求の数を減らしてS3使用のコストを大幅に増加させることです。 – Nyxynyx

+1

ZIPファイルをS3にアップロードし、EC2で解凍してコストを削減しても、EC2からS3に送られる解凍されたファイルごとにPUTリクエストがかかります。 – Daan

答えて

23

EC2マシンが同じ地域にある場合は、そこにアップロードしてそこからs3にドロップすることをお勧めします。 S3はそれをすべて静的なものとして解凍することはできません。

ec2とs3の間に電荷がないので、ec2は解凍を処理し、追加の転送料金なしでs3バケットに書き込むことができます。

+2

帯域幅は無料ですが、PUT(現在は1,000リクエストあたり0.005ドル)の支払いを行います。 10,000個の小さなファイルを含むzipファイルをお持ちの場合、アップロードには何らかの費用がかかります。さらに重要なことに、それには時間がかかります。 – Ben

+1

親愛なる@Akshat、あなたがそれを持っているなら、EC2からS3へのフォルダ(ちょうど解凍されている)を書くためにリンクかコードを共有してください、それは非常に高く評価されるでしょう –

2

S3は単なるストレージです。どのファイルをアップロードしても、それが保存されているファイルです。 zipファイルをアップロードしてS3で一度抽出することはできません。あなたがアプリケーションを書いたのであれば、私が言うことのできる最も良いことは、ファイルの保存方法を再設計しようとすることです。 S3リクエストはかなり安いです...多くのリクエストをしなければなりません。

2

このサービスを使用して、何千もの小さな画像ファイルを解凍しました。アップロードする各ジップは約4GBで、http://www.cloudzipinc.com/service/s3_unzipを使用して解凍するには約$ 1の費用がかかります。

これは、BotoライブラリでPythonを使用する方が簡単だと思います。それはPHPよりはるかに効率的に動作します。

関連する問題