Skip to main content

S3とEBSの違いとは?ユースケースで選ぶAWSのストレージ最適化

はじめに 

はじめまして!新入社員の森田彩巴です。 

AWSサービスのストレージの選定で、S3とEBSのどちらを使うべきか迷ったことはありませんか 

AWS(Amazon Web Services)にはさまざまなストレージサービスがありますが、その中でも特によく使われるのが、S3(Simple Storage Service)と EBS(Elastic Block Store)です。どちらも「データを保存する」めに使われるサービスですが、それぞれに異なる特性や使い方があり、目的によって最適な選択が変わってきます。 

この記事では、S3とEBSの基本的な違いを整理した上で、実際のユースケースに応じた使い分け方を、具体的な操作手順とともにわかりやすく解説します。 

GetImage (10)-1

 


目次 

・はじめに 

・S3・EBSの概要 

・比較グラフ 

・ユースケース解説+操作方法 

・まとめ 

 

 


S3とEBSの概要 

S3とは(Simple Storage Service) 

GetImage (11)-1

S3はAWSクラウド上にファイルを保存するためのオブジェクトストレージで、画像や動画、ドキュメントなどの静的ファイルを大量に保存することに適しています。

また99.999999999%(イレブンナイン)の耐久性と99.99%の可用性があり、長期的なデータの保存にも向いたサービスです。

 →オブジェクトストレージとは 

 データをオブジェクト単位で管理するものです。データはファイル(オブジェクト)単位で保存されるため、オブジェクトの内容を変えたくてもS3の中で直接操作することはできず、変更する場合は、もう一度アップロードをし直す必要があります。そのため、更新頻度の高いデータには向きません。 

 オブジェクト(ファイル)は「キー(名前)」と「メタデータ(説明情報)」がセットで保存されます。「キー」はそのオブジェクトを見つけるための一意の名前やURLのようなもので、「メタデータ」は作成日やファイルの種類のような付加情報のことで、検索や管理に使うことができます。 

 

EBSとは(Amazon Elastic Block Store) 

 GetImage (12)-1

EBSはAWSが提供するブロックストレージで、EC2インスタンスと組み合わせて使用します。EC2インスタンスと接続し、ファイルシステムを作成することで、通常のディスクと同様に読み書きが可能になります。

このようにEBSは仮想マシンに接続されるハードディスクのような役割を果たし、OSやアプリケーション、データベースなどのデータを保存するのに適しています。

 →ブロックストレージとは 

 データを固定サイズのブロック単位で管理するもので、オブジェクトストレージとは違い、ディスクの中で「区切られた領域(ブロック)に細かく保存されるため、ファイルの一部だけを直接読み書き、更新することができます。

オペレーティングシステムからはハードディスクのように認識されるため、柔軟で高速なアクセスが可能です。そのため、更新頻度の高いデータや、データベース・ファイルシステムなどの用途に適しています。

 


比較グラフ 

 

S3 

EBS 

ストレージタイプ 

オブジェクトストレージ 

ブロックストレージ 

主な用途 

静的ファイル、バックアップ、分析基盤 

EC2のDBやログ保存、EC2のバックアップが取得可能 

可用性・耐久性 

イレブンナインの耐久性・99.99%の可用性 

可用性はAZ単位、スナップショットでバックアップ可能 

主な連携サービス 

CloudFront、Athena、Lambdaなど 

EC2のみ 

変更単位 

オブジェクト単位 

(ファイル全体を再アップロード) 

ブロック単位 

(部分的な書き直しが可能) 

暗号化 

SSEやKMS、バケットポリシー 

デフォルトですべて暗号化される 

EBS暗号化、IAMを通じた制御

作成時に暗号化設定が必要 

AZ変更 

マルチAZにまたがって保存される 

AZをまたいだ設定は不可 

バックアップ 

バージョニングによるバックアップが可能 

スナップショットによるバックアップが可能 

 


ユースケース別解説+操作方法 

ユースケース1(S3) 

<想定シーン> 

企業のコーポレートサイトで、画像やPDFなどの静的ファイルをWebサービスとして配信するケース。 

なぜS3が適しているか 

S3はインターネット経由でファイルに直接アクセスできるため、画像やPDFなどの静的コンテンツの配信に最適で、CloudFrontと連携することで高速かつ安定した配信が可能です。 

<操作方法> 

1,バケットの作成 

AWSマネジメントコンソールにログインし、「S3」サービスを開きます。 

GetImage (13)-1

「バケットを作成」をクリックします。 

GetImage (14)

バケット名、リージョン、パブリックアクセス設定など必要な項目を設定して最後に右下の「バケットを作成」をクリックします。 

Amazon S3のバケット名は全リージョンでグローバルに一意である必要があります 

これは、S3がバケット名を使ってリソースを特定し、URLベースでアクセスされる仕組みになっているためです。 

たとえば、S3バケットは次のようなURLでアクセスされます: 

https://[バケット名].s3.amazonaws.com/ 

のようにURLにバケット名が含まれるため、同じ名前のバケットが複数存在するとリクエストの宛先を正しく判別できなくなります。そのため、S3ではバケット名が全体で一意であることを求めています。 

GetImage (15)

GetImage (16)

2,ファイルのアップロード 

作成したバケットをクリックして開きます。 

オレンジの「アップロード」を押し、配信したいPDFや画像を入れ、必要に応じてアクセス権限を設定し、「アップロード」を完了します。

GetImage (17) 

GetImage (18)

3,バケットの公開設定 

バケットの「アクセス許可」のタグに移動します。 

「パブリックアクセス設定」の確認を行い、必要に応じてパブリックアクセスを許可します。 

下にスクロールすると「バケットポリシー」があります。ここでバケットポリシーを設定し、オブジェクトの読み取りを許可します。 

GetImage (19)

(例:すべてのユーザーに読み取り権限を与えるポリシー) 

GetImage (21)

(コピー用) 

   "Version": "2012-10-17", 

   "Statement": [ 

   { 

          "Sid": "Stmt1621068192000", 

           "Effect": "Allow", 

           "Principal": { 

                 "AWS": "*" 

            }, 

           "Action": "s3:*", 

           "Resource": "arn:aws:s3:::${ここにバケットの名前を入れる}" 

      } 

    ] 

このような設定を行うことで、S3はインターネット経由でファイルに直接アクセスでき、画像やPDFなどの静的コンテンツ配信に最適です。低レイテンシー配信が可能なCloudFrontと組み合わせて使われることもありますが、別のサービスとなりますので今回は省略します。 

ユースケース2(EBS) 

<想定シーン> 
社内の販売管理システムや業務アプリケーションをEC2上で運用し、そのデータを保持・処理するストレージが必要なケース。 

なぜEBSが適しているか 

EBSはEC2インスタンスにアタッチして使うブロックストレージであり、高いIO性能とOS・データ用のファイルシステムとしての柔軟性を備えています。永続的なデータ保持が可能で、スナップショットによるバックアップや復元も容易です。 

<操作方法> 

1.EBSボリュームの作成

AWSマネジメントコンソールで「EC2」サービスを開き、左メニューから「ボリューム」を選択して「ボリュームの作成」をクリックします。 

GetImage (22)

サイズ(GiB)アベイラビリティゾーン、ボリュームタイプを設定して作成します 

GetImage (23)

 

2,EC2インスタンスへのアタッチ 

作成したEBSボリュームを選択し、「アクション」→「ボリュームのアタッチ」を選び、対象のEC2インスタンスを指定してアタッチします。 

GetImage (24)

 

ユースケース3(S3) 

<想定ケース> 

美術館・博物館・メディア企業が、映像・音声・写真などのデジタル化された文化資料を半永久的に保管しないといけないケース。 

なぜS3が適しているか 

S3にはストレージクラスというデータの使われ方や頻度に応じて、コストや性能が変わる「クラス(種類)」を選べる仕組みがあります。そのため、頻繁にアクセスはしないが、長期間保管しておきたいデータに適しています。 

S3のストレージクラス 

S3標準 

デフォルトのストレージクラス。低レイテンシーと高スループットを兼ね備えた、S3の性能が最も発揮されるクラス。 

S3ー低頻度アクセス(S3標IA 

標準にくらべて格納コストが安価なストレージクラスで、データのアクセスは随時可能となっているが、データの読み出し費用が高めに設定されている。 

S3 Intelligent-Tiering 

アクセス頻度に基づいて自動的にデータを最も費用対効果の高いストレージクラスに移動する。 

S3 Glacier Instant Retrieval 

アクセス用途の、低コストでの保管が可能なストレージクラス。データの取り出しはミリ単位でできるが、データの保管費用はより低く、データの取り出し費用はより高い。 

S3 Glacier Flexible Retrieval 

Glacier Instant Retrievalよりもデータの保管費用は低くなるが、データの取り出しに数分から数時間のアクセス時間が必要になる。 

S3 Glacier Deep Archive 

S3で最も低コストのストレージクラスで、データの取り出し時間が最も遅く設定されており、最大で12時間以内に復元できるように設計されている。 

<操作方法> 

1,ストレージクラスの設定 

ファイルをアップロードする際に「ストレージクラス」を設定するだけでOKです。すでにアップロード済みのファイルも、後からストレージクラスを変更できます。 

バケットを選択し、ストレージクラスを変更したいオブジェクトを選択します。 

下にスクロールすると「ストレージクラス」があり、右上の「編集」からストレージクラスを変更できます。 

GetImage (25)

GetImage (26)

 

ユースケース4(EBS) 

<想定ケース> 

企業が使う受発注管理システムでは、大量のトランザクションが発生するため、安定した高いIO性能・低レイテンシーが求められるケース 

なぜEBSが適しているか 

EBSは、ワークロードに応じて最適なボリュームタイプを選べる柔軟性があるため、業務システムの要件に合わせたストレージ設計が可能です。想定ケースのように安定した性能と低レイテンシーが求められる場面では、高IOPSに対応した io2 を選ぶことで、より高いパフォーマンスと信頼性を確保できます。 

EBSのボリュームタイプ 

EBSには、用途や必要な性能によって選べ複数のストレージタイプが用意されています。それぞれ「スピード」「コスト」「用途」に違いがあります。 

汎用SSD 

gp3はバランスの取れた性能を持ち、コストも抑えられている。Webアプリケーション、開発環境、OSディスクなど、広く使える万能型のストレージであり、IOPSやスループットを必要に応じてカスタマイズできる。 

プロビジョンドIOPS SSD(io2) 

データベースなど高い性能を求めるシステムに適している。名前の通り、IOPS(1秒あたりの読み書き回数)をあらかじめ指定して確保できるため、パフォーマンスが安定しており、重要な業務システムに向く。 

スループット最適化 

大量のデータを連続的に読み書きする処理に向いている。HDDタイプのストレージで、ログファイルの処理やデータ解析といった用途には適しています。ストレージ単価も低く、コスト効率よく大量のデータを扱いたいときに役立つ。 

Cold HDD(sc1) 

ほとんどアクセスされないデータの長期保存に最適なタイプ。最も安価なストレージである一方、性能は非常に低く、頻繁に読み書きする用途には適さない。古いログやアーカイブ、バックアップ適してる。 

<操作方法> 

1、ボリュームタイプの変更 

EC2サービスを開き、 左メニューから 「ボリューム」 を選択します。 

対象のボリュームを選び、「アクション」から「ボリュームの変更」 を選択します。 

希望のボリュームタイプを選択し、「変更を保存」 をクリックします。 

GetImage (27)

GetImage (28)

ユースケース5 (S3) 

会社の内部規定および業界のガイドラインにより、顧客との取引ログを変更や削除ができない状態で最低7年間保存することが義務づけられているケース。 

なぜS3が適しているか 

S3には「オブジェクトロック」という機能があり、取引ログなどのデータをロックすることで、設定した期間中は誰も変更や削除ができないように保護することができます。これにより、重要なデータを改ざんや誤削除から守りながら、安全かつ確実に長期間保管することが可能になります。 

<操作方法> 

1、オブジェクトロックを設定 

オブジェクトロックは、バケット作成時に設定します。 

上記と同じようにバケット作成を開き、下にスクロールをし、詳細設定をひらく 

詳細設定で、「オブジェクトロックを有効にする」にチェックを入れ、バケットを作成します。 

GetImage (29)

2.オブジェクトをロックする 

アップロードしたオブジェクトを開き、アップロード画面の「プロパティ」タブを開きます。 

GetImage (30)

オブジェクトロックの保持設定を編集し、「有効にする」を選択したうえで、保持期間を入力します。最後に「変更を保存」をクリックすれば完了です。 

GetImage (31)

*オブジェクトロックはバケット作成時にしか有効にできません! 

もしも既存のバケットでオブジェクトロックを行いたい場合は、新しいバケットを作成し、既存のオブジェクトを新しいバケットにコピーし、コピー先のオブジェクトにオブジェクトロックを設定する必要があります。 

 


まとめ 

S3とEBSは、それぞれ異なる用途に最適化されたAWSのストレージサービスです。 

S3は「インターネット経由でアクセスできる静的ファイルの保存」「長期アーカイブ」「様々なサービスとの連携」ができます。 

EBSは「EC2と密接に連携するシステム」「高性能な読み書き」「一時的な業務データの保存」に適しています。 

目的やワークロードに応じて、それぞれの特性を理解した上で選択することで、パフォーマンスとコスト最適化を実現できます。 

 


参考文献 

AWS skill builder 

AWS Skill Builder 

Qiita「S3のバケットポリシー書き方まとめ」 

https://qiita.com/irico/items/a3ab1f8ebf1ece9cc783 

AWS 「Amazon S3 ストレージクラス」 

https://aws.amazon.com/jp/s3/storage-classes/ 

AWS 「Amazon EBS ボリュームの種類」 

https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/ebs-volume-types.html