Webエンジニア susumuis の技術ブログ

このブログの内容は個人の見解であり、所属する組織の公式見解ではありません

Amazon s3とCloudFrontを試してみた。

週末に試してみました。

Amazon S3http://aws.amazon.com/jp/s3/
CloudFrontは http://aws.amazon.com/jp/cloudfront/

両方共構築はビックリするほど簡単でした。S3は管理コンソールからリージョンを指定してバケットを作成し、管理コンソール上からGUIでファイルのアップロードをすることができます。CloudFrontはオリジンにS3のバケットを指定してしばらく待てば、S3と同じパスのドメイン違いでアクセスできるようになります。

課金額なども上記ページに書いてあります。用途にもよりますが、データ量も転送量も気になる金額になることはなさそうですね。データの反映はわりかしすぐにされますね。

S3の転送スピードはリージョンによってどれくらい違うか?CloudFrontの効果はどれくらいかということも調べてみました。完全な調査ではなく、あくまで一例としての参考にとどめてください。

(環境は自宅(都内)のADSL回線(12M)です。)

S3単体(US East)

S3単体(Tokyo)

S3(US East)+ CloudFront

CloudFront速いですね!サービスの提供地域が国内など限定的な場合は近くのリージョンの、S3を利用しても良さそうです。世界的にサービス提供をする場合は、CloudFrontを組み合わせたほうが望ましいでしょう。

ただし、CloudFrontに格納されたファイルはキャッシュされてしまうため、オリジンの変更を行っても、古いファイルが残り続けます。これはサーバ側のキャッシュのため、expireヘッダでクライアントのキャッシュを扱うときのように、「t=タイムスタンプ」のようなパラメータをつけてもダメです。キャッシュの有効期限を決められるので、期限切れを待つか、APIでinvalidateを行う必要があります。

ファイルを直接アップロードする場合は、このあたりを参考にすると良さそうです。
http://blog.flect.co.jp/cto/ec2s3/
アプリ側でアップロードを行う設計の場合は、APIを直接呼び出せば良さそうです。