S3 のリクエスト課金はなぜ GET と PUT で料金が違うのか - ストレージ I/O の経済学

S3 の GET リクエストが PUT の 12.5 分の 1 の料金である理由を、書き込みの内部コスト、イレイジャーコーディング、整合性保証の仕組みから解説し、リクエスト料金を最適化する実践的なテクニックを紹介します。

GET と PUT の料金差 - 12.5 倍の開き

(2026 年 8 月時点・米国東部 (バージニア北部) の料金) S3 Standard の料金体系では、PUT/COPY/POST/LIST リクエストは 1,000 件あたり 0.005 USD、GET およびその他のリクエストは 1,000 件あたり 0.0004 USD です。PUT は GET の約 12.5 倍の料金です。この価格差は恣意的なものではなく、AWS の内部コスト構造を反映しています。書き込み (PUT) は読み取り (GET) よりも、S3 の内部インフラに対して遥かに大きな負荷をかけます。PUT リクエストが到着すると、S3 はデータを複数の物理デバイスに冗長化して書き込み、メタデータインデックスを更新し、整合性を保証するための同期処理を実行します。GET リクエストは、メタデータインデックスからデータの位置を特定して読み出す処理が中心で、冗長化のための多重書き込みや整合性のための同期処理を伴いません。書き込みの方が計算量、I/O 量、ネットワーク帯域の消費が大きいため、料金が高く設定されています。単価はリージョンによって異なるため、実際の見積もりは利用リージョンの公式料金表で確認してください。

書き込みの内部コスト - イレイジャーコーディングと冗長化

S3 は 11 ナイン (99.999999999%) の耐久性を実現するために、データをイレイジャーコーディングで冗長化しています。イレイジャーコーディングは、データを複数のフラグメントに分割し、パリティフラグメントを追加して、一部のフラグメントが失われてもデータを復元できる技術です。PUT リクエストが実行されると、S3 はオブジェクトのデータをイレイジャーコーディングで符号化し、生成されたフラグメントを複数の AZ にまたがる複数の物理デバイスに書き込みます。この書き込みは、すべてのフラグメントが正常に保存されたことが確認されるまで完了しません。2020 年 12 月に S3 が強い整合性 (Strong Consistency) を導入して以降、PUT の直後の GET が最新のデータを返すことが保証されています。この整合性保証のために、PUT はメタデータインデックスの更新を同期的に行う必要があり、追加のレイテンシとコストが発生します。GET は、メタデータインデックスから最新のデータの位置を読み取り、保存されているフラグメントから元のデータを組み立てて返します。冗長化のための多重書き込みや同期処理を伴わないため、書き込みに比べて処理が軽量です。なお S3 の内部実装の詳細は公開されていないため、ここでの説明はイレイジャーコーディングという方式から導かれる一般的な性質に基づく整理です。

ストレージクラスによるリクエスト料金の違い

(2026 年 8 月時点・米国東部 (バージニア北部) の料金) S3 のストレージクラスによって、リクエスト料金は大きく異なります。ここで混同しやすいのが、アーカイブ系のストレージクラスにおける GET リクエストと復元リクエストの違いです。S3 Glacier Flexible Retrieval からの GET やその他のリクエストは 1,000 件あたり 0.0004 USD で、S3 Standard の GET と同じ単価です。高いのは、アーカイブされたオブジェクトを読み出せる状態に戻すための復元リクエストで、こちらは 1,000 件あたり 0.05 USD、Standard の GET の 125 倍にあたります。書き込み側も単価が異なり、S3 Glacier Flexible Retrieval への直接の PUT や POST は 1,000 件あたり 0.03 USD です。アーカイブ系のクラスは、取り出しに数分から数時間を要する代わりにストレージ単価を下げる設計になっており、この取り出し処理のコストが復元リクエストの料金として現れます (内部でどのような媒体にどう保存しているかは公開されていません)。復元では、リクエスト件数とは別に、取り出したデータ量に応じたデータ取り出し料金も発生します。S3 Intelligent-Tiering は、アクセスパターンに基づいてオブジェクトを自動的に最適なアクセス層へ移動します。自動階層化の対象は、既定の Frequent Access tier (頻繁アクセス層)、30 日間連続してアクセスされないオブジェクトが移る Infrequent Access tier (低頻度アクセス層)、90 日間アクセスされないオブジェクトが移る Archive Instant Access tier の 3 つで、いずれもミリ秒単位のアクセス性能を保ちます。さらにオプトインで Archive Access tier と Deep Archive Access tier を有効にできますが、この 2 つは取り出しに時間を要します。層の間の移動に追加のリクエスト料金はかからず、代わりにオブジェクト 1,000 件あたり月額 0.0025 USD のモニタリングおよび自動化の料金がかかります。なお 128 KB 未満のオブジェクトは自動階層化の対象外で、Frequent Access tier の料金が適用され、モニタリングおよび自動化の料金もかかりません。アクセスパターンが予測しにくいワークロードでは、手動でストレージクラスを管理するよりもコスト効率が良い場合があります。単価はリージョンによって異なるため、実際の見積もりは利用リージョンの公式料金表で確認してください。

リクエスト料金を最適化する実践テクニック

(2026 年 8 月時点・米国東部 (バージニア北部) の料金) リクエスト料金が問題になるのは、小さなオブジェクトを大量に読み書きするワークロードです。1 KB のオブジェクトを 100 万件 PUT すると、リクエスト料金は 5 USD になります。一方で保存されるデータは約 1 GB なので、S3 Standard のストレージ料金は月額 0.023 USD です。リクエスト料金がストレージ料金の 200 倍以上になります。最適化の第 1 の手法は、小さなオブジェクトを結合して大きなオブジェクトにすることです。1 KB のオブジェクト 1,000 件を 1 MB のオブジェクト 1 件にまとめれば、PUT リクエスト数は 1,000 分の 1 になります。読み取り時は Range GET でバイト範囲を指定して、必要な部分だけを取得します。結合したファイルの中身を条件で絞り込みたい場合は、Amazon Athena でクエリを実行する構成が現行の選択肢です。GET の応答を加工する S3 Object Lambda も同じ用途に使えますが、2025 年 11 月 7 日に新規のお客様への提供が終了しており、既存の利用者だけが継続利用できます。同じ用途に使われてきた S3 Select も新規のお客様には提供されておらず、既存の利用者だけが従来どおり利用できる状態なので、これから設計するなら Athena を軸にするのが安全です。第 2 の手法は、LIST リクエストの最小化です。LIST はどのストレージクラスでも S3 Standard の PUT/COPY/POST と同じ単価 (1,000 件あたり 0.005 USD) がかかります。大量のオブジェクトを持つバケットで頻繁に LIST を実行すると、料金が膨らみます。オブジェクトの一覧が必要な場合は、S3 Inventory を使用してバケットの内容を CSV / ORC / Parquet 形式で定期的にエクスポートし、Athena で分析する方が安価です。第 3 の手法は、CloudFront をキャッシュレイヤーとして配置することです。同じオブジェクトへの GET リクエストが多い場合、CloudFront がキャッシュすることで S3 への GET リクエスト数を大幅に削減できます。単価はリージョンによって異なるため、実際の見積もりは利用リージョンの公式料金表で確認してください。

DELETE は無料、ライフサイクルの移行は課金対象

(2026 年 8 月時点・米国東部 (バージニア北部) の料金) S3 の DELETE リクエストと CANCEL リクエストは、公式の料金表で無料と明記されています。DELETE もメタデータインデックスの更新を伴うため内部的な処理コストは発生しているはずですが、なぜ課金しないのかという理由は公表されていないので、ここでは料金体系の事実として押さえておきます。注意したいのは、ライフサイクル設定による自動処理が一律に無料ではないことです。有効期限切れによるオブジェクトの削除にリクエスト料金はかかりませんが、ストレージクラスの移行はライフサイクル移行リクエストとして課金されます。単価は移行先のクラスによって異なり、S3 Glacier Flexible Retrieval への移行は 1,000 件あたり 0.03 USD、S3 Glacier Deep Archive への移行は 1,000 件あたり 0.05 USD です。小さなオブジェクトを大量にアーカイブへ移す設計では、この移行リクエスト料金がストレージ料金の節約分を上回ることがあるため、移行前に対象件数で見積もっておく必要があります。もう 1 つの例外が最低保存期間です。S3 Standard-IA と S3 One Zone-IA は 30 日、S3 Glacier Instant Retrieval と S3 Glacier Flexible Retrieval は 90 日、S3 Glacier Deep Archive は 180 日という最低保存期間があり、これより早くオブジェクトを削除したり別のクラスへ移行すると、残りの日数分のストレージ料金に相当する早期削除料金が日割りで請求されます。つまり DELETE のリクエスト自体は無料でも、削除のタイミングによっては費用が発生します。ライフサイクルによるコスト最適化を組むときは、リクエスト料金と最低保存期間の 2 つを見込んで設計してください。単価はリージョンによって異なるため、実際の見積もりは利用リージョンの公式料金表で確認してください。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトおよび公式ドキュメントです。最新の仕様 / 料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。