Amazon S3(Amazon Simple Storage Service)は、AWSが提供する拡張性と耐久性に優れたクラウドのオブジェクトストレージサービスです。本記事では、Amazon S3を導入するメリット・デメリットをはじめ、複雑な料金体系や実務で役立つCLIコマンドの使い方を解説します。
Amazon S3を活用することで、容量無制限のストレージ確保やコストの最適化、そしてイレブンナイン(99.999999999%)と呼ばれる高耐久性を実現できます。運用中のWebサイトで画像や動画が増え続け、EBSのディスク容量不足に悩んでいる方にとって、S3への移行は有効な解決策となります。
Amazon S3とは
Amazon S3は、AWSが提供する、バケット全体の容量制限を持たない高い耐久性を備えるオブジェクトストレージサービスです。
※1オブジェクトあたりの最大サイズは50TB
HTTP/HTTPS経由でデータを出し入れする点が、OSにマウントして利用する従来のファイルサーバーと大きく異なります。
S3の最大の特徴は、99.999999999%(イレブンナイン)という圧倒的な耐久性です。データは自動的に複数のデータセンターに分散保存される設計になっています。そのため、ハードウェア障害や一部の拠点で障害が発生しても、データ消失のリスクは極めて低く設計されています。
また、EBS(ブロックストレージ)とは異なり、S3は内部的にフラットな構造を持ちます。ディレクトリ階層は存在しませんが、オブジェクトキーにプレフィックス(/)を使用することで、運用上はフォルダ構成を意識した管理が可能です。
OSから切り離されたストレージであるため、ディスク容量不足によるサーバーダウンを未然に防げる点も大きな強みです。
以下の表は、EBS(ブロックストレージ)とAmazon S3(オブジェクトストレージ)の違いをまとめたものです。
| 比較項目 | EBS (ブロックストレージ) | Amazon S3 (オブジェクトストレージ) |
|---|---|---|
| データの持ち方 | 階層型 | フラット型 |
| 容量の上限 | あり | なし ※(1オブジェクト最大50TB) |
| アクセス方法 | EC2にアタッチしてファイルシステム経由 例: /var/www/xxx | HTTP/HTTPS API またはS3 URI 例: s3://bucket/key※http/httpsでアクセスさせるためには、公開設定が必要 |
Web制作やシステム開発の現場では、プログラムの実行や動的な処理を行うWebサーバー(EC2)と、画像や動画、ログなどの静的データを保存するS3を切り離して運用するのが標準的です。
これにより、サーバー側のストレージ(EBS)の負荷を下げ、安価に拡張性を確保する構成が広く採用されています。
Amazon S3の種類(ストレージクラス)
Amazon S3には、データのアクセス頻度や用途に応じてコストを最適化できるよう、以下のように複数の「ストレージクラス」が用意されています。
| カテゴリ | ストレージクラス | アクセス頻度・用途 |
|---|---|---|
| 高性能ストレージクラス | S3 Express One Zone | 最高頻度 |
| 汎用ストレージクラス | S3 Standard | 高頻度 |
| 汎用ストレージクラス | S3 Intelligent-Tiering | 不明・変動 |
| 低頻度アクセスストレージクラス | S3 Standard-IA | 低頻度 |
| 低頻度アクセスストレージクラス | S3 One Zone-IA | 低頻度 |
| アーカイブストレージクラス | S3 Glacier Instant Retrieval | アーカイブ(即時) |
| アーカイブストレージクラス | S3 Glacier Flexible Retrieval | アーカイブ(長期) |
| アーカイブストレージクラス | S3 Glacier Deep Archive | 長期保存(最安) |
| 特殊なストレージクラス | AWS専有ローカルゾーン用S3ストレージ | 特定の規制管轄区域内でデータを完結させる必要がある場合 |
| 特殊なストレージクラス | Amazon S3 on Outposts | 自社データセンター内でS3 APIを利用したい場合 |
※2026年1月時点。最新のストレージクラスはこちらを確認してください。
出典:オブジェクトストレージクラス – Amazon S3 , https://aws.amazon.com/jp/s3/storage-classes/ , (2026年1月3日参照)
ここでは、それぞれのストレージクラスについて解説します。
1.高性能ストレージクラス
Amazon S3 Express One Zone
Amazon S3 Express One Zoneは、要求の厳しいアプリケーション向けに設計されたクラスです。
従来のS3 Standardよりも最大10倍高速なパフォーマンスを提供し、AIや機械学習のトレーニングデータなど、ミリ秒単位の低遅延が必要な処理に適しています。
2.汎用ストレージクラス
Amazon S3 Standard
標準的で、よく利用されるストレージクラスです。
Webサイトの画像配信やアプリケーションデータなど、頻繁にアクセスされるデータの保存に適しています。高い耐久性と可用性を備えています。
Amazon S3 Intelligent-Tiering
アクセスパターンが予測できない場合や変動する場合の利用が適しているクラスです。
アクセス頻度をモニタリングし、自動的にコスト効率の良い階層へデータを移動させます。運用管理の手間をかけずにコスト削減が可能です。
3.低頻度アクセスストレージクラス
Amazon S3 Standard-IA
アクセス頻度は少ないものの、必要なときにはすぐに取り出したいデータの保存に適しているストレージクラスです。
S3 Standardよりも保管料金が安価ですが、データ取り出し時に料金が発生します。長期的なバックアップや災害対策データによく使われます。
Amazon S3 One Zone-IA
データを複数のアベイラビリティゾーン(AZ)ではなく、単一のAZにのみ保存することで、Standard-IAよりもさらにコストを抑えたクラスです。
ただし、AZ障害時にはデータが消失するリスクがあるため、再生成可能なデータのバックアップなどに限定して利用します。
4.アーカイブストレージクラス
Amazon S3 Glacier Instant Retrieval
アーカイブ用でありながら、ミリ秒単位での即時取り出しが可能です。
医療画像やニュース映像のアーカイブなど、普段は使わないがいざというときにすぐアクセスしたいデータに向いています。
Amazon S3 Glacier Flexible Retrieval
アーカイブ保存する際によく使われる標準的なクラスです。
取り出しには数分から数時間の待機時間が必要ですが、Instant Retrievalよりも保管コストを抑えられます。
Amazon S3 Glacier Deep Archive
S3の中で低コストなストレージクラスです。
取り出しには12時間から48時間かかりますが、法規制対応で7年以上の保存が義務付けられているログデータなど、利用頻度が低いデータを長期保存したい場合に適しています。
5.特殊なストレージクラス
AWS専有ローカルゾーン用S3ストレージ
データの保存場所に関する厳しいコンプライアンス要件があり、特定の規制管轄区域内でデータを完結させる必要がある場合に利用します。
Amazon S3 on Outposts
AWS Outpostsを利用し、自社のオンプレミス環境内でS3のAPIや機能を利用したい場合に選択します。ローカルでのデータ処理が必要なシステムに向けたクラスです。
Amazon S3を導入するメリット4選
Amazon S3には、高い耐久性の確保やコストの最適化、容量制限からの解放、詳細な権限管理といった利点があります。ここでは、システム運用における4つの主要なメリットを解説します。
- 耐久性・可用性が高い
- コストを最適化しやすい
- 容量を気にせず運用できる
- 細かい権限管理を行える
1.耐久性・可用性が高い
Amazon S3は、データを自動的に3箇所以上のデータセンターへ複製し、99.999999999%(イレブンナイン)の耐久性を実現しています。
この仕組みにより、自前でのバックアップ環境構築や複雑なRAID管理が不要となり、インフラ担当者の運用負荷とデータ消失リスクを大幅に軽減できます。
可用性の観点では、S3に備わる「静的ウェブサイトホスティング機能」を利用することで、突発的なアクセス集中時でもWebサーバーのダウンを回避可能です。S3自体がリクエストを処理するため、サーバーレスで安定した可用性が高いコンテンツ配信環境を構築できます。
実際の業務システムやWebサービス運用では、CDNであるCloudFrontを組み合わせ、キャッシュ配信や通信最適化を行う構成が標準的に採用されています。
関連記事:Amazon CloudFrontとは?CDNの仕組みやS3連携のメリット、料金をわかりやすく解説
2.コストを最適化しやすい
Amazon S3には初期費用や最低利用期間がなく、実際に保存した容量と通信量、リクエスト数に応じた従量課金のみで済むため、小規模なプロジェクトでも採用しやすいのがメリットです。
EBSや固定容量のサーバーとは異なり、不要な空き容量に対してコストを払う無駄がなくなり、データの増減に合わせて支払いが最適化されます。
また、Webサーバーを介さずにS3から直接HTMLや画像をインターネットへ公開できるため、サーバーレスで安価にWebサイトを構築・運用することも可能です。
さらに、ライフサイクルポリシーを活用し、アクセスの減った古いデータを安価なクラスへ自動移動させることで、長期保管コストをさらに圧縮できます。
3.容量を気にせず運用できる
Amazon S3にはバケットあたりの保存容量やオブジェクト数の上限設定自体が存在しません。
従来のサーバー用ストレージ(EBS)では、あらかじめ固定の容量を確保する必要があり、容量が不足するたびに手動でのディスク拡張やメンテナンス作業が不可欠でした。OSによっては作業に伴うダウンタイム(サービス停止)が発生する場合もあります。
一方でS3は、サービス成長に伴い画像やログが急増しても、プラン変更や増設作業をすることなく自動でスケールします。トラフィックが急増してもパフォーマンスの劣化がなく、安定したデータアクセスを維持できるのも大きなメリットです。
4.細かい権限管理を行える
タグベースのアクセス制御(ABAC)により、「特定のIPアドレスのみ許可」「社内システムからの参照のみ許可」といった柔軟な権限管理が可能です。
署名付きURL機能を使えば、会員限定コンテンツのように「特定のユーザーに対して期間限定でアクセスを許可する」といった高度な配信制御も実現できます。
アクセス状況はS3のアクセスログやCloudTrailを利用して「いつ誰がどのファイルにアクセスしたか」を追跡できるため、厳格なセキュリティ監査にも対応可能です。
Amazon S3を導入するデメリット3選
Amazon S3を導入するデメリットは主に以下の3つです。ひとつずつ解説します。
- 予想以上のコストが発生する場合がある
- 動的コンテンツは実行できない
- ファイルシステムのような柔軟な操作ができない
1.予想以上のコストが発生する場合がある
従量課金制であるため、アクセス数や転送量に応じて料金が変動します。予算管理が難しく、想定以上のアクセスがあった月に請求額が跳ね上がるリスクがあるため注意しなければなりません。
| ケース | 具体的な状況 | 主に増加するコスト | 注意点 |
|---|---|---|---|
| S3からのインターネット転送量がかさむ場合 | Webサイトやサービスで画像・動画を頻繁に配信し、S3から直接インターネットへデータを送信している | データ転送量(Outbound) | 保管料は安価でも、アクセス数が増えると転送料がコストの大半を占めることがある |
| ストレージクラス選定を誤った場合 | アクセス頻度が高いデータを低頻度アクセス向けクラスに保存している | データ取り出しコスト | 保管料は下がっても、取り出し料金によりトータルコストが高くなる場合がある |
| バージョニング設定の管理が不十分な場合 | 削除や更新をしても、古いオブジェクトが残り続けている | 保存容量 | 意図せず不要なデータが蓄積し、容量課金が増加する |
2.動的コンテンツは実行できない
S3はオブジェクトストレージサービスであり、ファイルはHTTP APIを通じてオブジェクト単位で読み書きします。EC2のようにファイルシステムとしてそのままマウントしたり、PHPやRubyなどのプログラムをサーバー上で実行したりする機能は提供されていません。
そのため、動的なWebアプリケーションをS3単体で(S3ウェブホスティングで)実現することは不可能です。動的処理が必要な場合は、EC2やLambdaなどのコンピューティングサービスと組み合わせる設計が求められます。
一方、静的なHTMLやCSS・画像・動画などの配信、ログやバックアップの保存、データレイクの構築など、「オブジェクトをHTTP経由で保存・取得する」用途に対しては、スケーラブルかつ低コストで非常に適したサービスです。
3.ファイルシステムのような柔軟な操作ができない
マネジメントコンソール(GUI)での操作は大量ファイルの処理に不向きです。数千ファイルをブラウザ経由でドラッグ&ドロップすると、ブラウザがフリーズする恐れがあります。
フォルダ構造を維持したまま大量アップロードを行う場合、GUIでは操作ミスや転送漏れが起きやすく、業務利用には信頼性が不足しています。
実務で大量データを扱う際は、GUIではなく、後述するAWS CLIなどのコマンドラインツールを使うことが前提となる点に注意が必要です。
Amazon S3の料金体系と具体例
Amazon S3の料金は、主に「データ容量」「データ転送量」「リクエスト数」の3要素で構成されています。(2025年12月時点)
具体例も含めて解説します。
- データ容量
- データ転送量
- リクエスト数
- 具体例
1.データ容量
Amazon S3のデータ容量あたりのストレージ料金はストレージクラスや保存データ容量などに応じて課金されます。
| ストレージ料金を決める組み合わせ要素の具体例 | |
|---|---|
| リージョン | アジアパシフィック(東京) |
| ストレージクラス | S3 Standard |
| 容量 | 最初の50TB/月 |
| ストレージ料金 | USD 0.025/GB |
そのため、使用頻度の低いデータを安いクラスに移すことで節約可能です。
標準クラス(S3 Standard)以外のストレージクラスを利用する場合、最低保存期間や最小オブジェクトサイズなどの制約がある点に注意してください。
また、削除したデータには課金されないため、不要なファイルを定期的に削除するライフサイクル設定を行うことが、長期的なコスト削減の鍵となります。
2.データ転送量
S3へのアップロード(Inbound)は無料ですが、S3からインターネットへデータを送信する(Outbound)際に従量課金が発生します。
例えばS3に画像を保管し、静的Webホスティング機能を使用して配信する場合、Webサイトで画像を表示するたびに転送料金がかかるため、アクセス数の多いサイトでは保管料よりも転送料が大きくなることもあります。
このような構成では、CloudFront(CDN)を併用することで、S3からの直接転送量を減らし、トータルの転送コストを削減できるケースが多くあります。
3.リクエスト数
データの書き込み(PUT)や読み込み(GET)といったリクエスト回数に応じて課金されますが、安価な単価設定になっています。
GETリクエストであれば1,000万回につき数ドル程度に設定されており、中小規模のプロジェクトであればコストを過度に心配する必要はありません。
ただし、オブジェクトのリスト表示(LIST)などのAPIコールは、GET等に比べると単価が高め(100万回につき数ドル程度)に設定されています。そのため、プログラムによる無駄なポーリング処理(頻繁な状態確認)などは避けるのが賢明です。
月間数千万PVを超えるような大規模サイトや、大量の小規模ファイルを頻繁に読み書きするシステムでない限り、リクエスト料金が全体のコストを圧迫することは稀ですが、設計の初期段階で大まかなアクセス規模を把握しておくと安心です。
4.具体例
ここでは、10万枚の画像をS3に保管し、以下の条件で静的Webホスティング機能を使用して配信する場合の月額料金を試算します。
- 保存容量: 100GB(1ファイル1MB × 10万ファイル)
- 月間リクエスト数: 10万ファイル
- 転送量: 1MB×10万ファイル=100GB
- 為替: 1ドル=150円換算
| 項目 | 計算式(参考) | 月額料金(円) |
|---|---|---|
| 保存容量 ・ストレージクラス:S3 Standard ・リージョン:アジアパシフィック(東京) | 0.025USD × 100GB × 150円 | 約 375円 |
| データ転送量 | 0.114USD × 100GB × 150円 | 約 1,710円 |
| リクエスト数 | 0.00037USD × 10万回 ÷ 1,000 × 150円 | 約 6円 |
| 合計 | 約 2,091円 |
Amazon S3のCLIコマンドの使い方
AWS CLIを用いてAmazon S3を操作する具体例として、初期設定からsyncコマンドを実行してデータを同期する際の手順を解説します。
- 初期設定
- 接続確認とファイルの一覧表示コマンド(ls)
- 同期コマンド(sync)
- 事故を防ぐためのオプション(–dry-run / –delete)
1.初期設定
まず、公式サイトからAWS CLIインストーラーをダウンロード・インストールし、ターミナルでバージョン確認を行って導入が成功したかチェックします。
1 | aws --version |
次に以下コマンドを使いログインを行います。
1 | aws login |
初回のみリージョン指定が求められるため、適切なものを入力します。
1 | AWS Region [us-east-1]:任意のリージョンを入力 |
リージョン指定が完了したら、OSのデフォルトブラウザが立ち上がり、AWSのサインインが促されます。
サインインが問題なく完了したら、プロファイル完了のメッセージが表示されます。
1 | Updated profile default to use arn:aws:sts::<AWS_ACCOUNT_ID>:assumed-role/<ROLE_NAME>/<SESSION_NAME> credentials. |
これでCLIへのログインは完了です。
2.接続確認とファイルの一覧表示コマンド(ls)
設定が完了したら、ls コマンドを実行して接続確認を行います。作成済みのバケット一覧が表示されれば認証は成功です。

3.同期コマンド(sync)
ローカルとS3を同期させるsyncコマンドの使い方は以下のとおりです。

cp(コピー)コマンドとは異なり、更新されたファイルのみを検知して転送する「差分同期」機能があるため、通信量を節約し高速に移行が完了します。
Webサーバーの画像ディレクトリをS3へ定期バックアップするcronジョブなど、実務での自動化運用ではよく使われているコマンドです。
4.事故を防ぐためのオプション(–dry-run / –delete)
コマンド操作で怖いのが「誤操作によるデータ消失」です。本番実行する際は、必ず --dry-run オプションを付け、どのような変更が行われるかを事前にシミュレーションしてください。
1 2 | # テスト実行(実際には転送されません) aws s3 sync ./images s3://my-bucket-name/images --dry-run |
成功すれば「DryRunOperation」が表示され、失敗する場合はエラーメッセージが返されます。
また、--delete オプションを併用すると、ローカルで削除されたファイルがS3側でも削除されるため完全同期が可能になりますが、取り扱いには十分注意してください。
1 2 | # 完全同期(ローカルにないファイルはS3からも削除される) aws s3 sync ./images s3://my-bucket-name/images --delete |
Amazon S3の利用・最適化の相談は専門家へ
Amazon S3は、高度な耐久性と容量無制限の拡張性を備えたオブジェクトストレージサービスです。
単純なデータ保存だけでなく、ストレージクラスの使い分けやライフサイクルポリシーを活用すれば、コストの最適化や運用負荷の軽減が実現します。
特に、既存のVPSやオンプレミス環境からの安全な移行や、セキュリティを考慮した権限設計には、システム全体の適切な構成が不可欠です。
専門的なポイントが多いため、クラウド移行やインフラ設計に不安がある場合は専門家への相談を推奨します。サンアットマークは、AWSサービスパートナーとして豊富な実績がありますので、ぜひお気軽にご相談ください。



