第7章 ストレージの使い分け(EBS・S3とAWS CLI)

AWSには複数の種類のストレージサービスがあり、それぞれ適した用途が異なります。EBS・インスタンスストア・S3の違いと、AWS CLIを使ったS3操作の基本を扱います。

EBS(Elastic Block Store)— ブロックストレージ

EBSは、ネットワーク経由で接続される仮想ディスクです。lsblk・mount・dfなど、これまで学んだLinuxのディスク管理コマンドがそのまま使えます。設定次第で、インスタンスを停止・終了してもEBSボリューム自体を独立して残せるほか、スナップショットによるバックアップも可能です。

インスタンスストア — 一時ストレージ

インスタンスストアは、インスタンスに物理的に直結された高速なストレージです。ただし、インスタンスの停止や終了によってデータが失われるという制約があるため、永続化が必要なデータではなく、一時的なキャッシュや作業領域に向いています。

S3(Simple Storage Service)— オブジェクトストレージ

S3は、一般的なファイルシステムのようにマウントして使うのではなく、キーと値(オブジェクト)の形でデータを保存・取得する仕組みです。通常のcpやmvではなく、AWS CLIのaws s3 cpやaws s3 syncコマンドを使って操作します。

$ aws s3 cp report.txt s3://my-bucket/reports/   # 1ファイルをアップロード
$ aws s3 sync ./local-dir s3://my-bucket/prefix/  # ディレクトリを同期(差分のみ転送)
実務のヒント: aws s3 syncは、これまで学んだrsyncと考え方が似ており、変更があった差分だけを転送します。rsyncの使い方を覚えていれば、感覚的につかみやすいコマンドです。
永続性アクセス方法主な用途
EBS設定次第で独立して永続化可能lsblk・mount・dfなど通常のLinuxコマンドOS領域、データベースのデータ領域など
インスタンスストアインスタンス停止・終了で消失通常のLinuxコマンド一時キャッシュ、作業領域
S3高い耐久性で永続化aws s3 cp/syncなどのAPI経由バックアップ、静的ファイルの保管・配信

EBSスナップショットによるバックアップ

EBSボリュームは、任意のタイミングでスナップショットとしてS3にバックアップできます。スナップショットは差分ベースで保存されるため、2回目以降は変更のあった部分だけが新たに保存され、ストレージコストを抑えられます。スナップショットから新しいEBSボリュームを作成すれば、ある時点の状態を別のインスタンスで復元することも可能です。定期的なスナップショット取得は、Linuxでのtarやrsyncによる定期バックアップと同じ発想の、AWS上での実装方法だと捉えておくとよいでしょう。

複数インスタンスで共有できるEFS

EBSは基本的に1つのインスタンスに接続して使うものですが、複数のインスタンスから同時にマウントして共有したいファイル領域が必要になる場合もあります。そうした用途には、EFS(Elastic File System)というネットワークファイルシステムのサービスが使われます。NFSプロトコルでマウントする点は、これまで学んだNFSサーバーの構築・運用の知識がそのまま応用できる部分です。

EBSのボリュームタイプという選択肢

EBSには複数のボリュームタイプがあり、用途に応じて選ぶ必要があります。汎用SSDであるgp3は多くの用途に適したバランス型で、特別な理由がなければまず検討する標準的な選択肢です。データベースのように高いI/O性能が継続的に必要な用途には、プロビジョンドIOPS SSDであるio2が向いています。逆に、アクセス頻度の低いログの長期保管などには、より安価なHDDタイプのボリュームが適しています。これは、これまで学んだディスクの種類(HDD/SSD)や、RAIDレベルによる性能・耐障害性のトレードオフを検討する考え方と本質的に同じで、「何を優先するか」によって適切な選択肢が変わる点も共通しています。

S3のストレージクラスとライフサイクル

S3にも複数のストレージクラスがあり、アクセス頻度の高いデータは標準ストレージクラスに、アクセス頻度が下がった古いデータはより安価なストレージクラス(Glacierなど)に自動的に移動させるライフサイクルルールを設定できます。たとえば「30日以上アクセスのないログは低頻度アクセス用のクラスへ、180日以上経過したログはさらに安価なアーカイブ用のクラスへ」といった設定をしておけば、手作業でファイルを移動・削除しなくても、データの鮮度に応じたコスト最適化が自動的に進みます。Linuxでtar・gzipで古いログを圧縮してから別のディスクに退避する運用を、AWSでは設定ひとつで自動化できるとイメージすると分かりやすいでしょう。

アクセスパターンが読みにくいデータ(頻繁にアクセスされる時期とほとんどアクセスされない時期が混在するようなデータ)には、S3 Intelligent-Tieringというストレージクラスも選択肢になります。これはアクセス頻度をAWS側が自動的に監視し、ライフサイクルルールを個別に設計しなくても、最適な階層へ自動的にデータを移動してくれる仕組みです。ライフサイクルルールを自分で細かく設計する手間と、自動判定に任せる手軽さのどちらを取るかは、データの性質次第で使い分けます。

豆知識: EBSボリュームやS3のオブジェクトは、既定で保存時に暗号化(保管時暗号化)できます。AWSアカウントの設定でEBSの既定の暗号化を有効にしておけば、新しく作成するEBSボリュームは特別な指定をしなくても自動的に暗号化された状態で作られます。ディスク全体を暗号化するLUKSの設定を毎回意識する必要があった従来のLinuxサーバー運用と比べ、暗号化を「意識しなくても既定でオンになっている」状態に近づけやすいのはクラウドならではの利点です。

この章のまとめ

EBSは通常のLinuxコマンドで扱える永続的なブロックストレージ、インスタンスストアは高速だが一時的なストレージ、S3はaws s3コマンドで操作するオブジェクトストレージ、という3者の役割の違いを押さえました。さらに、EBSスナップショットによるバックアップと、複数インスタンスで共有できるEFSについても触れました。次章では、この編で扱った内容をチェックリスト形式で振り返ります。

確認クイズ

Q1. EBS(Elastic Block Store)の特徴として、正しい説明はどれですか?

解説: EBSはネットワーク経由で接続される仮想ディスクで、lsblkやmount、dfなど通常のLinuxのディスク管理コマンドがそのまま使えます。

Q2. Amazon S3にファイルをアップロードする際に、一般的なcpコマンドの代わりに使うAWS CLIコマンドはどれですか?

解説: S3へのファイルのアップロードには、通常のcpコマンドの代わりにaws s3 cpコマンドを使います。

Q3. インスタンスストアの一般的な特徴として、正しい説明はどれですか?

解説: インスタンスストアはインスタンスに物理的に直結された高速なストレージですが、インスタンスの停止や終了によってデータが失われるという制約があります。