EC2間で安全にファイル共有するEFS活用法

EC2

はじめに

本記事では、複数の EC2 インスタンスで同じファイルを安全かつリアルタイムに共有する方法について学んでいきます。

アプリケーションをスケールアウトさせるとき、どのインスタンスからも共通のデータにアクセスできる仕組みが必要になります。もし各インスタンスがバラバラに動いてしまうと、データの不整合や管理の手間が増えてしまいます。そのため、「共有ストレージ」という考え方を理解しておくことはとても重要です。

ここでは、代表的な手法である EFS・S3・NFS・同期ツール などを取り上げ、それぞれの特徴や使いどころを整理します。実際の構築を通じて、スケールアウト構成で共通データを扱う仕組みを理解し、どんなケースでどの選択肢を使うべきかを掴んでいきましょう。

EFS の概要と S3 との違い

EFS(Amazon Elastic File System)

  • 仕組み:NFS(Network File System)ベースの共有ストレージ
  • 利用方法:EC2 インスタンスにマウントして、通常のファイルシステムのように利用可能
  • 特徴:複数の EC2 インスタンスから同時アクセスが可能で、リアルタイムにファイルを共有できる
  • 用途:スケールアウト構成のアプリケーション(例:Web サーバー群の共通データ保存)

S3(Amazon Simple Storage Service)

  • 仕組み:オブジェクトストレージ(ファイルを「オブジェクト」として保存)
  • 利用方法:API(REST/SDK/CLI)経由でアクセス
  • 特徴:ほぼ無制限にデータを保存可能。高い耐久性と可用性を持ち、グローバル配信にも強い
  • 用途:大容量データの保管、バックアップ、静的ファイルの配信(例:画像・動画、静的 Web サイトのホスティング)

違いのまとめ

項目EFSS3
ストレージ形式ファイルシステム(NFS)オブジェクトストレージ
アクセス方法EC2 にマウントして利用API 経由でアクセス
同時利用複数 EC2 からリアルタイム共有可能リアルタイム共有は想定されていない
主な用途アプリケーション間でのファイル共有静的ファイル配信、大容量データ保存

EFS の作成とマウントターゲットの設定手順

EFS を作成する

  • AWS マネジメントコンソールにアクセスし、EFS の作成画面を開きます。
  • ファイルシステム名や利用する VPC を選択し、基本的な設定を完了します。
Screenshot

セキュリティグループの作成/選択

「ネットワーク」設定画面で、EFS 用のセキュリティグループを割り当てます。
新規作成する場合は「EC2」サービスの「セキュリティグループ」から作成可能です。

インバウンドルールの追加

  • プロトコル: NFS
  • ポート: 2049
  • ソース: EFS を利用する EC2 インスタンスのセキュリティグループ
    • (IP アドレス直指定でも動きますが、SG を指定する方が安全です)

EC2 側のセキュリティグループも確認

EC2 インスタンス側の SG で、アウトバウンドルールが NFS(2049) を許可していることも確認してください。

EFS のマウントターゲットにアタッチする

  1. マネジメントコンソールで 「EFS」 を開く
  2. 対象のファイルシステムをクリック
  3. 「ネットワーク」タブ を選択
  4. 「管理」をクリック
  5. 各マウントターゲットに対して、先ほど作成した セキュリティグループ を関連付ける

EC2 から EFS をマウントする手順

amazon-efs-utils パッケージをインストールする

EFS を簡単にマウントできるユーティリティを導入します。

Amazon Linux 2 の場合

sudo yum install -y amazon-efs-utils

マウントポイントを作成する

EFS をマウントするディレクトリを作成します。

sudo mkdir -p /mnt/efs

EFS をマウントする

EFS のファイルシステム ID を指定してマウントします。

sudo mount -t efs -o tls fs-XXXXXXXX:/ /mnt/efs
  • fs-XXXXXXXX は EFS のファイルシステム ID に置き換えます
  • -o tls は暗号化通信を有効化するオプションです

マウントできているか確認

sudo tail -n 50 /var/log/amazon/efs/mount.log

永続化設定(/etc/fstab に登録)

再起動後も自動的にマウントされるように、/etc/fstab に設定を追加します。

echo "fs-XXXXXXXX:/ /mnt/efs efs _netdev,tls 0 0" | sudo tee -a /etc/fstab

EFS を利用した共有 HTML ディレクトリ構成

マウントポイントを作成(作成されていない場合)

EC2 上で Web サーバーのドキュメントルート /var/www/html を作成します。

sudo mkdir -p /var/www/html

EFS をマウント

作成済みの EFS を /var/www/html にマウントします。

sudo mount -t efs fs-xxxxxxxx:/ /var/www/html
  • fs-xxxxxxxx は、実際の EFS ファイルシステム ID に置き換えてください。
  • -t efs を指定することで amazon-efs-utils 経由でマウントできます。

検証用ファイルを作成

EFS 内に index.html を作成し、複数 EC2 から同じ内容が参照できることを確認します。

echo "Hello from EFS" | sudo tee /var/www/html/index.html

動作確認

複数の EC2 から Web サーバーを経由してアクセスし、同じページが返ってくることを確認します。

curl http://<EC2のパブリックIP>/

まとめ

本記事では EFS を用いた複数 EC2 インスタンス間でのファイル共有 をテーマに、以下のポイントを学びました。

  • リアルタイム共有が可能な EFS の仕組み
  • スケールアウト構成での共通データ管理の考え方
  • インフラ設計における「EFS と S3 の使い分け」

この流れを理解すれば、実運用でも EC2 を増やしたときに 同じデータソースを持つ安全な構成 をすぐに展開できるようになります。

コメント

タイトルとURLをコピーしました