週末に試してみました。
Amazon S3は http://aws.amazon.com/jp/s3/
CloudFrontは http://aws.amazon.com/jp/cloudfront/
両方共構築はビックリするほど簡単でした。S3は管理コンソールからリージョンを指定してバケットを作成し、管理コンソール上からGUIでファイルのアップロードをすることができます。CloudFrontはオリジンにS3のバケットを指定してしばらく待てば、S3と同じパスのドメイン違いでアクセスできるようになります。
課金額なども上記ページに書いてあります。用途にもよりますが、データ量も転送量も気になる金額になることはなさそうですね。データの反映はわりかしすぐにされますね。
S3の転送スピードはリージョンによってどれくらい違うか?CloudFrontの効果はどれくらいかということも調べてみました。完全な調査ではなく、あくまで一例としての参考にとどめてください。
(環境は自宅(都内)のADSL回線(12M)です。)
CloudFront速いですね!サービスの提供地域が国内など限定的な場合は近くのリージョンの、S3を利用しても良さそうです。世界的にサービス提供をする場合は、CloudFrontを組み合わせたほうが望ましいでしょう。
ただし、CloudFrontに格納されたファイルはキャッシュされてしまうため、オリジンの変更を行っても、古いファイルが残り続けます。これはサーバ側のキャッシュのため、expireヘッダでクライアントのキャッシュを扱うときのように、「t=タイムスタンプ」のようなパラメータをつけてもダメです。キャッシュの有効期限を決められるので、期限切れを待つか、APIでinvalidateを行う必要があります。
ファイルを直接アップロードする場合は、このあたりを参考にすると良さそうです。
http://blog.flect.co.jp/cto/ec2s3/
アプリ側でアップロードを行う設計の場合は、APIを直接呼び出せば良さそうです。