Amazon S3 Files の料金体系を図解で整理してみた
はじめに
Amazon S3 Files は結局 EFS と比べて安いのか、高いのか、課金体系がわからなかったので調べた結果をまとめました。
確認結果
S3 Files の課金ポイントを以下の図に整理しました。

S3 Files の構成を簡単に紹介
S3 Files は「高性能ストレージ」と呼ばれるキャッシュ層(ベースは EFS)であり、S3 バケットと、NFS クライアントの間に位置します。高性能ストレージはメタデータと、アクティブなデータのみを保持し S3 と定期的に同期する構成です。S3 側で直接ファイルを更新した場合はイベントをトリガーに同期します。

画像引用: Working with Amazon S3 Files - Amazon Simple Storage Service
S3 Files のストレージ料金
高性能ストレージの課金は、シンプルに高性能ストレージに置かれたファイルの容量のみが対象です。ここは EFS と同じ課金体系です。詳細は後述します。
| 項目 | 東京リージョン |
|---|---|
| 高性能ストレージ | $0.36/GB/月 |
高性能ストレージに置かれるデータは何かというと、S3 のメタデータ、S3 から読み込まれたファイルのデータ、NFS クライアントから書き込みをしたファイルのデータです。
sizeLessThan 閾値とデータの読み込み
S3 Files は S3 からメタデータをインポートします。
| 設定 | 値 |
|---|---|
| 最小値 | 0 バイト(データはインポートしないが、メタデータはインポートできる) |
| 最大値 | 52,673,613,135,872 バイト(48 TiB) |
| デフォルト | 131,072 バイト(128 KB) |
参考: Customizing synchronization for S3 Files - Amazon Simple Storage Service
閾値未満のファイル(デフォルト 128KB 未満)は、アクセス時にデータが高性能ストレージへ読み込まれ、ストレージ料金と Read/Write 料金が発生します。一方、閾値以上のファイル(デフォルト 128KB 以上)は、S3 から直接ストリーミングされ、高性能ストレージにはデータが載りません。ストレージ料金は発生せず、S3 GET リクエスト料金のみです。
つまり、閾値によって S3 Files の利用料金が大きく変わることになります。

データの期限切れ
高性能ストレージのデータは daysAfterLastAccess(1〜365 日、デフォルト 30 日)で自動削除されます。削除自体に課金は発生しません。オリジナルのデータは S3 バケットに保存されているので問題ありません。

S3 Files のファイル操作料金
データの読み書き課金の見方は、S3 Files の高性能ストレージから見て読み込まれたか、書き込まれたかです。
データ読み取り
閾値未満のファイル(デフォルト 128KB 未満)を高性能ストレージから読み取る場合、$0.04/GB が課金されます。

データ書き込み
高性能ストレージへの書き込みは $0.07/GB です。

メタデータの操作
ls、stat、mkdir、rm、chmod などのメタデータ操作は 4KB/操作で Read 課金が発生します。
| 操作 | 課金種別 | メータリングサイズ |
|---|---|---|
| データ読み取り | Read ($0.04/GB) | データサイズ(最小 32KB) |
| データ書き込み | Write ($0.07/GB) | データサイズ(最小 32KB) |
| メタデータ操作 | Read ($0.04/GB) | 4KB/操作 |
| コミット操作(fsync/close) | Write ($0.07/GB) | 4KB/操作 |
参考: How S3 Files is metered - Amazon Simple Storage Service
閾値以上のファイルの読み取りは S3 から直接ストリーミング
sizeLessThan 閾値(デフォルト 128KB)によって読み取り経路と課金が変わります。閾値以上のファイルは、高性能ストレージを経由せず S3 から直接ストリーミングされます。この場合 S3 Files の操作料金は、メタデータの読み取りのみです。S3 GET リクエスト料金(約 $0.00037/1,000 リクエスト)は別途発生します。高性能ストレージはレイテンシ最適化、S3 はスループット最適化という棲み分けになっています。

その他の関連費用
S3 Files の料金に加え、S3 自体の料金や関連するネットワーク費用も発生します。閾値以上のファイルは S3 から直接読み取るため、VPC 内からのアクセスではゲートウェイ型の S3 VPC エンドポイントを設定しておくのがおすすめです。NAT Gateway 経由だとデータ転送料金が上乗せされ、意図せず高額な利用費になる可能性があります。
| 費目 | 料金 | 備考 |
|---|---|---|
| S3 標準 ストレージ | $0.025/GB/月 | 保存してあるデータに対して発生(他のストレージ階層の価格は割愛) |
| S3 PUT/COPY/POST/LIST | 約 $0.0047/1,000 リクエスト | Export 同期、rename 時に発生 |
| S3 GET/SELECT | 約 $0.00037/1,000 リクエスト | 閾値以上のファイル読み取り時に発生 |
| EventBridge 通知 | $1.00/100 万イベント | S3 変更検知。通常は無視できるレベル |
| S3 Gateway VPC エンドポイント | 無料 | 閾値以上のファイル読み取りで S3 に直接アクセスするため推奨 |
EFS との料金比較
S3 Files と EFS の主要な料金項目を比較します。ストレージ単価、読み書き課金は Elastic Throughput モードと同じ料金設定です。 S3 Files はメタデータ、閾値未満(デフォルト 128KB)のキャッシュデータ、書き込みを行い有効期限まで滞在中のデータのみが EFS と同じ価格のストレージに載っていることが違いです。

より現実的な設定での料金比較
EFS には IA/Archive ティア、S3 にも Intelligent-Tiering があります。「S3 Files + S3 Intelligent-Tiering」と「EFS Elastic Throughput」を、データの扱い方の違いも含めて比較します。非同期取り出しが必要なティア(S3 I-T Archive Access、Deep Archive Access)は除外します。
S3 Files では、すべてのデータは S3 バケット(I-T 高頻度)に保存され、一部のデータだけが高性能ストレージにキャッシュされます。EFS では、全データが Standard に置かれ、階層化で IA/Archive に落とす形です。
ストレージ単価の比較(東京リージョン)
| データの扱い | S3 Files + S3 Intelligent-Tiering | EFS Elastic Throughput | S3 が安い割合 |
|---|---|---|---|
| アクティブデータのキャッシュ | $0.36/GB-月(高性能ストレージ) | —(なし) | — |
| 高頻度アクセス | $0.025/GB-月(I-T 高頻度) | $0.36/GB-月(Standard) | 93% |
| 低頻度アクセス | $0.0138/GB-月(I-T 低頻度) | $0.02/GB-月(IA) | 31% |
| アーカイブ | $0.005/GB-月(I-T アーカイブインスタント) | $0.01/GB-月(Archive) | 50% |
EFS は全データが Standard($0.36/GB-月)で課金されます。S3 Files は全データを $0.025(I-T 高頻度)で保存し、アクティブな分だけ高性能ストレージ $0.36 が追加でかかります。とくに大量に保存してあるデータのうち一部しか使わないワークロードでは、ここの差がそのままコスト差になります。基本 S3 が安いので比較対象にされる EFS には申し訳ないのですが。
試算: 1TB のデータがあったとする(アクティブ 10%・非アクティブ 20%・コールド 70%)
| 項目 | S3 Files + S3 Intelligent-Tiering | EFS Elastic Throughput |
|---|---|---|
| アクティブなデータ(100 GB) | 100 GB × $0.025 = $2.50 | 100 GB × $0.36 = $36.00 |
| キャッシュ(10 GB)※ 仮置き | 10 GB × $0.36 = $3.60 | — |
| 非アクティブ(200 GB) | 200 GB × $0.0138 = $2.76 | 200 GB × $0.02 = $4.00 |
| コールド(700 GB) | 700 GB × $0.005 = $3.50 | 700 GB × $0.01 = $7.00 |
| 合計 | $12.36/月 | $47.00/月 |
S3 Files が月 $12.36、EFS が月 $47.00 で 差は約 $35/月です。 効いているのは、アクティブな 100GB を I-T 高頻度($0.025)に保存できる点です。EFS Standard($0.36)との単価差だけで月 $33.50 の開きになります。実際にキャッシュされる量は sizeLessThan 閾値とアクセスパターン次第で変動します。今回の試算では仮置きの 10GB(アクティブなデータの 10%) としました。
閾値以上のファイルは S3 から直接ストリーミングされるため、アクティブデータに大きいファイルが多いほどキャッシュ費用は減り、差はさらに広がります。一方、小さなファイル中心の用途ではキャッシュが増えやすいため、EFS との差は縮まります。また、書き込み量次第で高性能ストレージに載る量が月間 100GB に届くと合計金額は EFS と並びます。書き込み量が多い場合は、daysAfterLastAccess の調整で高性能ストレージ上に保持している期間を制限するとコストが下がります。
まとめ
S3 Files の料金は 2 層構造で、全データを安価な S3 バケット(I-T など)に保存し、メタデータなど一部のデータは高性能ストレージにキャッシュします。高性能ストレージに課金される対象は以下の 3 種類だけです。
- メタデータ
sizeLessThanの閾値未満のファイルのデータ(デフォルト 128KB)- 書き込み後に有効期限まで滞在するデータ
EFS の場合、全データが Standard($0.36)で課金されます。アクティブ比率の低いワークロードでは、月額差が数倍になることもあります。閾値以上のファイルは S3 から直接ストリーミングされるため、大きなファイルが多いワークロードや、コールデータが多いワークロードでは保存コストを抑えられます。小さなファイル中心の用途や、書き込みが多い場合は、sizeLessThan や daysAfterLastAccess をワークロードに合わせて調整しましょう。
おわりに
大容量のデータを EFS で扱っている場合、保存コストだけみれば採用を検討したくなりますが、同期ラグやファイルロックの制約があるため手放しに S3 Files を勧められないのが実情です。コスト削減のために切り替えを検討する場合は、事前に十分に検証してください。
- Amazon S3 Files が GA — S3 バケットをファイルシステムとしてマウント、EFS と比較してみた | DevelopersIO
- [S3] Amazon S3 Files でS3バケットをマウントする [NFS] | DevelopersIO
Dr. Werner 氏の S3 Files の記事が読み物として面白かったので紹介しておきます。
人力図解はもう時代遅れだと感じつつも、長い時間かけて今回の図になりました。どなたかの参考になれば幸いです。







