Amazon EFSを使って複数EC2でファイルを共有する方法

Amazon EFSを使って複数EC2でファイルを共有する方法

2026.05.20

はじめに

SREチームの乃万です。

AWSで複数のEC2インスタンスを運用していると、「片方のサーバーにファイルを置いたら、もう片方にも反映されてほしい」という場面が出てきます。

今回は、そのような要件をAmazon EFSElastic File System)で解決した事例をもとに、EFSの概要から実際のマウント手順・注意点まで紹介します。


Amazon EFSとは

Amazon EFSは、複数のEC2インスタンスから同時にアクセスできるマネージドな共有ファイルシステムです。

「クラウド上のNAS」というイメージが近く、NFSプロトコルを使って各EC2からマウントして利用します。

EBSとの違い

EC2のストレージといえばEBSが一般的ですが、EBSは単一のEC2にしかアタッチできません。複数のEC2で同じファイルを共有したい場合は、EFSを選択する必要があります。

項目 EBS EFS
複数EC2からの同時アクセス ❌ 不可 ✅ 可能
自動スケーリング
マルチAZ対応
可用性(SLA) 99.9% 99.99%

今回の構成

今回は以下の構成でEFSを導入しました。

basecamp-step2-1構成図

アプリケーションのプラグインインストール先(/var/app/plugins/)をEFSにマウントすることで、片方のEC2にプラグインを配置するだけで両方に反映される仕組みを実現しました。


手順

1. EFSの作成(CloudFormation)

ローカルで以下のCloudFormationのコードを作成し、AWS環境へデプロイする。

EFSSecurityGroup:
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupName: efs-sg
    GroupDescription: EFS Security Group
    VpcId: !Ref VPC
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 2049
        ToPort: 2049
        SourceSecurityGroupId: !Ref EC2SecurityGroup

EFSFileSystem:
  Type: AWS::EFS::FileSystem
  Properties:
    Encrypted: true
    PerformanceMode: generalPurpose
    ThroughputMode: bursting

EFSMountTarget1:
  Type: AWS::EFS::MountTarget
  Properties:
    FileSystemId: !Ref EFSFileSystem
    SubnetId: !Ref PublicSubnet1
    SecurityGroups:
      - !Ref EFSSecurityGroup

EFSMountTarget2:
  Type: AWS::EFS::MountTarget
  Properties:
    FileSystemId: !Ref EFSFileSystem
    SubnetId: !Ref PublicSubnet2
    SecurityGroups:
      - !Ref EFSSecurityGroup

ポイントは以下の2点です。

  • セキュリティグループ:EC2のセキュリティグループからNFS(TCP:2049)のインバウンドを許可するEFS専用SGを作成する
  • マウントターゲット:各AZにマウントターゲットを配置することで、両AZのEC2から低レイテンシでアクセス可能にする

2. EFSのマウント(各EC2で実施)

Cloud Shellなどで以下のコマンドを実行する。

# EC2にログイン
aws ssm start-session --target <EC2のインスタンスID>

# 以下EC2内での実行
# EFSマウントヘルパーのインストール
sudo yum install -y amazon-efs-utils

# マウントポイントの作成
sudo mkdir -p /var/app/plugins

# EFSのマウント
sudo mount -t efs -o tls,soft,timeo=150,retrans=3 <EFSのID>:/ /var/app/plugins

# OS再起動後も維持されるよう/etc/fstabに追記
echo "<EFSのID>:/ /var/app/plugins efs tls,soft,timeo=150,retrans=3,_netdev 0 0" | sudo tee -a /etc/fstab

3. マウントの確認

EC2内で以下のコマンドを実行する。

mount | grep /var/app/plugins

以下のように表示されれば正常にマウントされています。

127.0.0.1:/ on /var/app/plugins type nfs4 (rw,relatime,vers=4.1,...)

df -h | grep efs では何も表示されない点に注意が必要です。
EFSはNFSとして認識されるため、grep nfs または mount コマンドでも使えるようですが、grep nfsでもうまく表示されませんでした。


マウントオプションの選択:hardとsoft

EFSのマウント方法には hard(デフォルト)と soft の2種類があります。

hardマウント(デフォルト)

EFSへの接続が失敗した際に永続的にリトライし続けるため、プロセスがハングアップしてサーバーがフリーズする可能性があります。

softマウント(推奨)

一定回数リトライした後にエラーを返します。サーバー自体はダウンせず、アプリケーション側でエラーとして処理できる状態を維持できます。

# softマウントの設定例(最大45秒待ってエラーを返す)
sudo mount -t efs -o tls,soft,timeo=150,retrans=3 <EFS_ID>:/ /var/app/plugins
オプション 設定値 意味
soft softマウントを有効化
timeo 150(15秒) 1回あたりのタイムアウト
retrans 3 リトライ回数

今回のようにプラグインの読み込みが中心のユースケースでは、データ整合性への影響が少なくサーバーの継続稼働を優先できるsoftマウントが適していました。


動作検証

実際にEC2-1でファイルを作成し、EC2-2から即時参照できることを確認しました。

# EC2-1にログイン
aws ssm start-session --target <EC2_1のインスタンスID>

# EC2-1でファイルを作成
sudo mkdir -p /var/app/plugins/sample-plugin
sudo tee /var/app/plugins/sample-plugin/plugin.conf << EOF
plugin_name=sample
version=1.0.0
enabled=true
EOF
# EC2-2にログイン(別ターミナルで開く)
aws ssm start-session --target <EC2_2のインスタンスID>

# EC2-2から確認(即時反映される)
cat /var/app/plugins/sample-plugin/plugin.conf
# plugin_name=sample
# version=1.0.0
# enabled=true

EC2-1で作成したファイルがEC2-2からリアルタイムで参照できることを確認できました。


注意点

.soファイルはアーキテクチャに依存する

EFS自体は異なるインスタンスタイプのEC2からもマウント可能ですが、共有される.soファイル(共有ライブラリ)はアーキテクチャ依存のようです。

例えばARM64用にコンパイルされた.soファイルはx86_64のEC2では動作しません。複数のEC2でアーキテクチャを統一しておくことが必要となります。

EFSはファイルを特定ディレクトリに配置する形式のプラグインに有効

OSのパッケージマネージャー(yumなど)でインストールするタイプのプラグインはOS側にシステム登録が必要なため、EFSでの共有には対応できません。zipを展開して特定フォルダに置くだけで動作する形式のプラグインに有効です。


まとめ

項目 内容
用途 複数EC2間でのファイル共有
プロトコル NFS(TCP:2049)
マウント確認コマンド mount | grep <マウントポイント>
推奨マウントオプション soft,timeo=150,retrans=3
可用性 99.99%(マルチAZ冗長化)
コスト 使用量に応じた従量課金

Amazon EFSを活用することで、複数EC2間のファイル共有をシンプルかつ高可用な構成で実現できます。

本ブログが誰かの参考になれば幸いです。

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。

運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。

当社は様々な職種でメンバーを募集しています。

「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 採用サイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事