Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

課金ポイントは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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away