AWS EFS とは?
EFS(Elastic File System)は、AWS クラウドサービスとオンプレミスのリソースの両方で使える、シンプルで拡張性・弾力性のあるファイルストレージを提供するサービスです。
EFS は Linux インスタンス向けの拡張性・共有性の高いファイルストレージで、EC2 Linux インスタンスにマウントされた Network File System(NFS)を通じて VPC 内から必要なファイルへアクセスしたり、AWS Direct Connect で接続されたオンプレミスサーバーのファイルへアクセスしたりできます。
AWS EFS の特徴
可用性
- VPC 内に作成され、ファイルシステムインターフェイスを通じて EC2 からアクセスします。
- 複数のアベイラビリティゾーンからアクセス可能です。
- 複数の AZ に冗長保存されるため、1 つの AZ が壊れても別の AZ からサービスを継続できます。
- EFS は EBS と違ってマルチ AZ(availability zone)をサポートし、ネットワーク経由のためセキュリティグループで制御されます。
スケーリング
- 数千台の EC2 から同時アクセスでき、ファイルの追加・削除に応じて弾力的に自動スケーリングします。つまり事前に容量をプロビジョニングする必要がありません。
- ペタバイト級のデータまで拡張可能です。
- 最大 1,000 個のファイルシステムを作成できます。
ストレージクラス
EFS には S3 と同様にストレージクラスがあります。
- Standard Class:頻繁にアクセスするファイルを保存するためのクラス
- Infrequent Access(IA)Class:保存期間は長いがあまりアクセスしないファイルを保存するためのクラス
ライフサイクル管理
- lifecycle によって、あまりアクセスされないファイルを自動的に EFS IA(Infrequently Accessed)へ移し、安価に利用できます。
パフォーマンスモード / スループットモード
- スループットモードは、ほとんどのファイルシステムで Bursting Mode が推奨されますが、処理量が多い場合は Provisioned Mode が推奨されます。
- パフォーマンスモードは、アクセスする EC2 が非常に多い場合は MAX I/O mode が望ましく、それ以外は General Mode の使用が推奨されます。
ファイルマウント
- EFS の DNS 名でマウントして、複数インスタンスから同時に使えます。
- ブロックストレージと同様、ファイルストレージもマウントすればローカルのファイルシステムのように使えます。
- EFS を使えば既存のファイルシステムから AWS DataSync でファイルを転送できます。
ファイルバックアップのオプション
- DataSync
- DataSync はオンプレミスのストレージと AWS EFS ファイルシステム間の常時接続を維持し、両者間のデータ移動を容易にします。
- DataSync は大量データの定期的なインポート/エクスポート、一回限りのデータ移行、またはデータのレプリケーションと復旧に使えます。
- リージョン間転送にも AWS DataSync を使えます。
- AWS Transfer Family
- SFTP、FTPS、FTP をサポートするフルマネージドのファイル転送サービスです。
- AWS EFS への/からのファイル転送を可能にします。
- AWS Transfer Family のエンドポイントは EFS ファイルシステムと同じリージョンにある必要があります。
- AWS Backup
- AWS EFS のバックアップポリシーとスケジュールを自動化・追跡します。
- EFS to EFS backup
ファイルシステムポリシー
- EFS を使うすべての NFS クライアントに適用される IAM リソースポリシーです。
- 転送中の暗号化、ルートアクセスの無効化、読み取り専用アクセスなどを設定できます。
VPC & EC2 & EFS 実習
EFS を作る前に、まず Security Group を作る必要があります。NFS ポートを開けなければならないからです。既存のセキュリティポリシーを変えるより、新しく作ることにします。

まず EC2 メイン画面に入り、Security groups を押してから Create security group をクリックします。

上の写真のように VPC を正しく選び、Secure では先ほど作っておいた Security group を選択します。それでは EFS の設定をしに行きましょう。

アクセスして Create file system をクリックします。

Customize を押します。

- Storage class
- Standard は複数の AZ で使用可能にするクラスです。
- One zone は単一の AZ のみで使用可能にするクラスです。
- Automatic backups は自動でバックアップするかを決めるところです。
- Transition into IA は、最後のアクセスからどれくらいの期間アクセスがなければ IA クラスへ移すかを決めるオプションです。
- Transition out of IA は、いつ IA クラスから Standard クラスに戻すかを設定するオプションです。
- Encryption は EFS ファイルシステム内のデータを保護するかを設定するオプションです。

- Performance mode は IOPS に基づいてファイルシステムの性能を設定するオプションです。場合によって高い処理量が必要なら Max I/O を選択します。
- Throughput mode は EFS ファイルシステムのスループットを設定するオプションです。瞬間的に大量の処理をするときは Bursting を使います。

VPC を設定し、EFS ファイルシステムを利用する Subnet ID を正しく選択します。その後、先ほど作った vpc-efs-sg という Security Group を選べば OK です。次の画面はスキップします。作成された EFS をクリックし、右上の Attach を押します。

amazon-efs-utils を使えば、上のコマンドで EC2 にマウントできます。

EC2 に接続して df -h を打つと、まだマウントされていないことが確認できます。/var/www/html に入って efs というディレクトリを作り、先ほど確認した Attach コマンドを入力します。

その後 df -h で確認すると、マウントされたことが分かります。テスト用に efs ディレクトリへ入り、前回 S3 にアップしておいた index.html をダウンロードします。

きちんと取得できたことが確認できます。ではウェブサイトの /efs/index.html にアクセスして表示されるか確認しましょう。

問題なくアクセスできることを確認しました。次はもう一方の c1 サーバーでも同じように EFS ファイルシステムをマウントし、ファイルの中身を確認してウェブサイトにもアクセスしてみます。

AZ が異なる EC2 でも、EFS のネットワークで許可してあるため正常にマウントされ、先ほど a1 サーバーでダウンロードした index.html があることを確認できます。

同じく問題なくアクセスできることが確認できます。では index.html を少し修正して、リアルタイムで反映されるか確認しましょう。


リアルタイムでバッチリ反映されることを確認できました。
出典
原文(韓国語): tistory — 2023-01-12 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。