酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

AWS S3 と CloudFront のデータ転送はどっちのが高いのか?

AWS S3(Simple Storage Service) と CloudFront のデータ転送(アウト)の料金比較をおこなった。

2022/06/03時点の料金で、すべて東京リージョンと日本国内からのアクセスを想定している。また1ドルは130円で換算している。

S3とCloudFrontのデータ転送料金

あるアプリを開発している。このアプリには機能がたくさんあるが、メインの機能は以下の通りである。

  • ユーザーはファイルをS3にアップロードする
  • 他のユーザーはそのファイルをダウンロードする

アップロード先を S3 固定とした場合、ダウンロードさせる場合には S3ダイレクト か CloudFront 経由がよいか? セキュリティ面やダウンロード速度の面からではなく、単純にどちらの方がコストが抑えられるのか議論になった。

  • アップロードしたファイルをS3から直接ダウンロードした方が良いのか
  • または、CloudFront経由でダウンロードした方が良いのか

頭の中ではぼんやりと CloudFrontは高い と思っていたので、その場では「S3からの方が安いです」と答えた。

リクエスト料金を含めると、その通り S3 の方が安いのだが、データ転送(アウト)の料金だけで考えると S3 も CloudFront も同じ価格であった。リクエスト料金の差は微々たるもので、データ転送料金の方が巨大なので、今後は「S3もCloudFrontもそんなに値段変わらないです」と答えたいと思う。

実際にはアプリは世界に向けて配信するだろうし、ユーザーの体験を良くするためにダウンロード速度は重要なので、CloudFront 経由一択になるかと思うが、次に質問された時にきちんと答えられるように備忘録を残す。

S3 だけの場合

S3へのデータ転送量(イン)については 0 円である。そのままS3から直接ファイルをダウンロードしたとして データ転送量(アウト) は 0.114 USD/GBかかる。

S3 + CloudFront の場合

こちらもS3へのデータ転送量(イン)については 0 円である。S3 から CloudFront へのデータ転送量は 0 円である。CloudFront からファイルをダウンロードしたとして データ転送量(アウト) は 0.114 USD/GBかかる。

料金を計算する

S3 と CloudFront の料金をざっくりを表にまとめた。それぞれオプションを付けると変わってくるがここでは考慮していない。単位はUSDである。

データ転送量が 150 TBまでは同一価格、150 TBを超えると CloudFront を使っている方が安くなる。「データ転送量 150TB」とはどれくらいの費用感かといえば、1ドル130円換算で 178 万円を超えたあたりである。

    S3 CloudFront
リクエスト(1万件あたり) - 0.0037 0.012
データ転送(1GBあたり) 10TBまで 0.114 0.114
  40TBまで 0.089 0.089
  100TBまで 0.086 0.086
  150TBまで 0.086 0.084
  350TBまで 0.084 0.084
  524TBまで 0.084 0.08

以下の内容を仮に想定した場合いくらになるのか計算する。

  • 1,000万リクエスト、データ転送量 15TBの場合
  • 10,000万リクエスト、データ転送量 150TBの場合

1,000万リクエスト、データ転送量 15TBの場合

  S3 CloudFront
リクエスト 3.7 USD 12 USD
データ転送 1,623.04 USD 1,623.04 USD
合計 1,626.74 USD 1,635.04 USD
211,476円 212,555 円

10,000万リクエスト、データ転送量 150TBの場合

  S3 CloudFront
リクエスト 37 USD 120 USD
データ転送 13,619.20 USD 13,619.20 USD
合計 13,656.20 USD 13,739.20 USD
1,775,306円 1,786,096 円

参考