
Amazon EFSを使って複数EC2でファイルを共有する方法
はじめに
SREチームの乃万です。
AWSで複数のEC2インスタンスを運用していると、「片方のサーバーにファイルを置いたら、もう片方にも反映されてほしい」という場面が出てきます。
今回は、そのような要件をAmazon EFS (Elastic 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を導入しました。

アプリケーションのプラグインインストール先(/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月 アノテーション㈱から社名変更しました







