S3のコストについて改めて確認してみた

2023.08.30

こんにちは、シマです。
皆さんはS3を使っていますか?S3は他のストレージサービスと比較して可用性が高く安価で利用することができるため、よく使うサービスだと思います。しかし、安価でも大量に利用するときは当然コストが大きくなるため、コストを意識する必要があります。
今回は、一般的な利用で発生するコストと留意すべき点を改めてまとめました。

描いてみた

S3の料金の詳細についてはAWS公式の以下ページに記載があります。

上記を基に、ザックリとした絵を描いてまとめてみました。
※マルチリージョンアクセスポイントやTransfer Accelerationのような機能の利用に応じて発生するコストは含んでいません。

上図の黄色枠が発生するコストを示しています。ストレージクラスの差は考慮から除外していて、利用するストレージクラスによりコストが発生しない場合もあります。ストレージクラスの比較については以下の記事が参考になります。

上図より、S3へ格納するデータの容量の他に、件数によってもコストが発生することがわかります。

ライフサイクル移行件数はどれくらい影響があるのか

各種容量に応じたコストはイメージしやすいですが、ライフサイクル移行件数によるコストはどの程度のものなのかイメージが難しかったので、少し具体的に例をあげて考えてみました。アクセス頻度が少ないオブジェクトを格納するバケットに対して、ライフサイクルを設定しS3 Glacier Deep Archiveへストレージクラスの変更をするケースを考えてみます。極端な例として、1秒で1ファイルをS3に格納するとします。その場合、1か月で約2,635,200件のファイルが格納されることになります。このファイル数がライフサイクルによりS3 Glacier Deep Archiveへストレージクラスの変更された場合、171.288USDかかることになります。また、S3 Glacier Deep Archiveへストレージクラスを移行するとメタデータとしてS3 Standardに8KB, S3 Glacier Deep Archiveとして32KBの容量が追加で使用されます。今回の例でも追加容量に伴う追加コストは1USD未満なため、あまりコストインパクトはないと考えても良さそうです。
※料金は2023年8月時点での東京リージョンを想定しています。

この条件のまま、以下の条件を追加してコストをシミュレートしてみました。

  • S3 Glacier Deep Archiveへライフサイクル移行するケース(青)
    • ファイル容量はそれぞれ128 KB
    • 10か月経過すると、ライフサイクルにより、S3 Glacier Deep Archiveへストレージクラスの変更をさせる
    • 取り出しは考慮しない
  • S3 Standardのまま利用を続けるケース(赤)

横軸は経過月数で、縦軸はトータルコスト(利用開始から経過月まで発生したコストの合計)です。
S3 Glacier Deep Archiveの安価なストレージ料金メリットよりライフサイクル移行件数コストによるデメリットが大きいため、S3 Glacier Deep Archive側(赤)のトータルコストが増えていくことが見えると思います。
今回の例は極端な例ですが、ライフサイクル移行件数が影響してコストが大きくなる可能性があることがわかりました。

コストを下げるための対策

対策は単純で件数を減らすことです。圧縮やファイルの結合によって件数を減らすことを検討しましょう。先ほどの例において、100件を1件にまとめた場合は以下のグラフのようになり、S3 Glacier Deep Archiveへライフサイクル移行をするコストメリットが見らるようになりました。

最後に

今回はS3のコストを改めて確認し、その中でライフサイクル移行件数についてピックアップして検討してみました。極端な例ではありましたが、ライフサイクル移行件数によるコストについて、再考するきっかけになれればと思います。

本記事がどなたかのお役に立てれば幸いです。