Edited at

S3の料金体系が分かりにくいと聞かれたので纏めた


課金ポイントは3つ

そんなに難しいことはないと思いますが 課金ポイントは3つ あります。


ストレージ容量

単純に保存容量に対して課金されます。

低冗長化ストレージを指定すると2割くらい安くできます。

ログだとか家族写真の保存だとかメインだとデータ転送よりここにお金がかかってきます。(容量でかいけど古いやつは殆どアクセスしないようなのはライフサイクル設定でGlacierに移動する手もあります)


データ転送

課金されるのは(S3からの)送信だけです。受信(S3へのアップロード)は無料です。

また、インターネットへの送信別のAWSリージョンまたはCloudFrontへの送信で別料金が設定されてますが、小~中規模のシステムならサーバ群は1リージョンに纏まってることが多いでしょうから、CroudFront利用時くらいにしかその料金は発生しないと思います。しかもCroudFront利用時は殆どのトラフィックはCroudFrontで処理されるから転送量はそっちに計上されて、S3からの送信は殆ど無視出来る感じになるでしょう。

あとAWSでは 同一リージョン内の(AZ非依存な)AWSサービスとの通信は無料 です。例えば同一リージョンのEC2とS3間の通信は送信も受信も無料。

なので特殊な用途以外では、 一番高いインターネットへのデータ送信だけ考えておけばよい と思います。


リクエスト数

多分これがあるせいでS3の料金が分かりにくいって言われるんでしょうね。

S3ではGET/PUT/POST/LIST/COPYなどのリクエスト数に対しての課金もあります。


  • GET は安い($0.0037/10,000req、OPTION/HEADとかも、↓以外は全部この料金)

  • PUT/POST/LIST/COPY は高め($0.0047/1,000req、GETの12.7倍)

  • DELETE は無料

例えば1日100万GETされると月に3千万リクエストで課金は$11.1になります。

データ転送コストの一部という感覚です。


適当に計算してみた感じ

CDN用途で使ったとして、キャッシュとか考えずに適当に計算してみると↓こんな感じ。

※2014/07/04に東京リージョンで計算した値です(前の価格覚えてないけど消費税UPで変わったかもしれないので再計算)。

※2014/12/01にAWS初のデータ転送量値下げキタ!後で再計算予定だけどとりあえず下の表の転送料金部分を25%OFFくらいで見ておけばOK!

※数字の単位は K=1024, G=1024*1024, T=1024^3, P=1024^4 です。

GETリクエスト数
平均ファイルサイズ
データ転送量
転送料金
リクエスト料金
合計料金

3千万(100万/日)
1KB
28.6GB
$5 .55
$11 .10
$16 .65

3千万(100万/日)
1.95KB
55.8GB
$11 .01
$11 .10
$22 .11

3千万(100万/日)
50KB
1.4TB
$287 .33
$11 .10
$298 .43

3千万(100万/日)
100KB
2.8TB
$574 .86
$11 .10
$585 .96

3千万(100万/日)
1MB
28.6TB
$5,068 .03
$11 .10
$5,080 .13

3億(1千万/日)
1KB
286.1GB
$57 .31
$111 .00
$168 .31

3億(1千万/日)
1.95KB
557.9GB
$111 .94
$111 .10
$222 .94

3億(1千万/日)
50KB
14.0TB
$2700 .33
$111 .10
$2,811 .33

3億(1千万/日)
100KB
27.9TB
$4,960 .54
$111 .10
$5,071 .54

3億(1千万/日)
1MB
286.1TB
$40,258 .35
$111 .10
$40,369 .35

30億(1億/日)
1KB
2.8TB
$574 .86
$1,111 .00
$1,684 .86

30億(1億/日)
1.95KB
5.4TB
$1,121 .18
$1,111 .00
$2.231 .18

30億(1億/日)
50KB
139.7TB
$21,113 .33
$1,111 .00
$22.223 .33

30億(1億/日)
100KB
279.4TB
$39,386 .31
$1,111 .00
$40,496 .31

30億(1億/日)
1MB
3.1PB
お問い合わせ
$1,111 .00
お問い合わせ


  • 平均ファイルサイズが2KB以下だと、リクエスト数 > データ転送 > ストレージ容量

  • 平均ファイルサイズが2KB以上だと、データ転送 > リクエスト数 > ストレージ容量

という順番でお金がかるっぽいです。

なので分割されたJS/CSSはconcatして小さい画像はCSSスプライトも活用してリクエスト数を減らしてやりましょう、サイトパフォーマンスが上がるだけじゃなく財布にも優しくなります。

それからやっぱ転送量が一番金がかかるのでクライアントキャッシュ出来るものはどんどんキャッシュさせて圧縮できるものは圧縮しときましょう。

ちなみにS3の前にCloudFrontを挟むとS3のリクエスト数とデータ転送量は大幅に減ります。ですが減った分はCloudFront側で計上されるのでゼロになるわけじゃありません、データ転送料金はCloudFrontの方が多少安く設定されています。特にデータ転送量が巨大になってきた場合はCloudFrontを経由したほうが、ボリュームディスカウントが効いてきたり、またリザーブド契約をすることで大幅な割引を受けたりも出来るので是非検討しましょう。特に年間とおして月平均10TB以上使う場合はCloudFrontの営業に連絡を取るべきです。


月額計算機(Amazon Web Services Simple Monthly Calculator)

とりあえずAWSの課金で悩んだら以下のページから見積もりできるので、実際の数字を入れて見てみるのが理解への近道です。

Amazon Web Services Simple Monthly Calculator

S3の料金なら、左メニューからAmazon S3をクリックして、リージョン選択をしてとりあえずは、ストレージ>ストレージ、データ転送>データ転送、リクエスト>GET、の値を入力しておけば十分でしょう。

あとこの計算機は、デフォで 右上の分かりにくいところにある初年度無料枠のチェックボックス がONになってるので長期的な見積もりをしたい場合は外しておきましょう。


値下げについて


  • 容量に対する課金は過去に何度も値下げがされています。きっと今後も定期的に値下げがあることが期待できます。


  • データ転送量とあとコール回数依存の課金(S3の場合はリクエスト数)に関しては、僕の記憶が確かなら全AWSサービスに対しても一度も値下げが無いと思います。特にデータ転送に関わる部分は高額になりがちなので安くなると嬉しいなーと毎回思うけどビクともしません、聖域なんですかね?


    • 2014年12月1日から、多分AWSで初のデータ転送量の値下げキター!!全体的に大体25%くらいは安くなるぞぉぉぉおーー!




関連リンク

Amazon S3 料金表

Amazon Web Services Simple Monthly Calculator