Amazon EFSを使ってみた

2021.08.10

こんにちは。イムチェジョンです。
今回のブログではAmazon EFSを利用し、複数のEC2インスタンスに共有ファイルシステムを使ってみたいと思います。

アジェンダ

  1. Amazon EFS(Elastic File System)とは?
  2. Amazon EFSの使い方
  3. まとめ

1. Amazon EFS(Elastic File System)とは?

  • 一回だけ設定すればファイルデータを共有できる弾力的なサーバーレスファイルシステム
  • ファイルを追加·削除する際にファイルシステムを自動で拡張·縮小できるため、プロビジョニングして管理する必要がない

2. Amazon EFSの使い方

複数のEC2インスタンス作成

まず、違うAZに二つのEC2インスタンスを作成しましょう。

一つ目のEC2インスタンスは以下の設定で作成します。
Amazon マシンイメージ (AMI) : Amazon Linux 2 AMI
インスタンスタイプ : t2.micro
サブネット : ap-northeast-2a
セキュリティグループ : SSH TCP 22 マイIP
キーペア : 既存キーペア及び新しいキーペアの中で選択

二つ目のEC2インスタンスは上のEC2インスタンスでAZ以外には同じ設定で作成します。
上に作ったEC2インスタンスを選択し、アクションイメージとテンプレート同様のものを起動

移動したページには上で作成したEC2インスタンスの情報があります。
その中でインスタンスの詳細部分を編集します。

インスタンスの詳細の中でサブネットだけ他のところを選択して作成します。

これで二つのEC2インスタンスを作成しました。

セキュリティグループ作成

次にAmazon EFSを作成する時に使うセキュリティグループ作成しましょう。

セキュリティグループ名:efs-sg
インバウンドルール:NFS TDP 2049 (EC2のセキュリティグループ)

セキュリティグループの作成完了です。

Amazon EFSの作成

次にAmazon EFSを作成しましょう。

デフォルトで作成も可能ですが、今回はカスタマイズをクリックします。

ステップ2(ネットワークアクセス)の部分でマウンドターゲットのセキュリティグループを全部、上で作成したefs-sgに設定します。

新しいファイルシステムが作成できました。

Amazon EFSの設定

二つのEC2インスタンスにEFSをアタッチするためにインスタンスに接続します。

次に作成したEFSのページでアタッチをクリックします。

すると、アタッチ設定の方法が出ます。 設定するためにはEC2インスタンスにAmazon EFSクライアントのインストールする必要がありので、下のユーザーガイドをクリックします。

ページを移動するとドキュメントでインストールするコマンドがあります。

これを二つのインスタンスに実行します。

$ sudo yum install -y amazon-efs-utils
Loaded plugins: extras_suggestions, langpacks, priorities,
: update-motd
amzn2-core | 3.7 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package amazon-efs-utils.noarch 0:1.31.2-1.amzn2 will be installed
--> Processing Dependency: stunnel >= 4.56 for package: amazon-efs-utils-1.31.2-1.amzn2.noarch
--> Running transaction check
---> Package stunnel.x86_64 0:4.56-6.amzn2.0.3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================
Package  Arch Version Repository  Size
==============================================================
Installing:
amazon-efs-utils noarch 1.31.2-1.amzn2  amzn2-core  46 k
Installing for dependencies:
stunnel  x86_64 4.56-6.amzn2.0.3  amzn2-core 149 k

Transaction Summary
==============================================================
Install  1 Package (+1 Dependent package)

Total download size: 195 k
Installed size: 479 k
Downloading packages:
(1/2): stunnel-4.56-6.amzn2.0.3.x86_64.r | 149 kB 00:00
(2/2): amazon-efs-utils-1.31.2-1.amzn2.n |  46 kB 00:00
--------------------------------------------------------------
Total  994 kB/s | 195 kB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : stunnel-4.56-6.amzn2.0.3.x86_64  1/2
Installing : amazon-efs-utils-1.31.2-1.amzn2.noarch 2/2
Verifying  : stunnel-4.56-6.amzn2.0.3.x86_64  1/2
Verifying  : amazon-efs-utils-1.31.2-1.amzn2.noarch 2/2

Installed:
amazon-efs-utils.noarch 0:1.31.2-1.amzn2

Dependency Installed:
stunnel.x86_64 0:4.56-6.amzn2.0.3

Complete!

設置できたら次にさっきのEFSアタッチページに戻ります。
EFSアタッチページでEFS マウントヘルパーの使用のコマンドをコピーしておきます。

EC2インスタンスの両方に新しいフォルダーを作ってコマンドを実行します。

$ mkdir efs
$ sudo mount -t efs -o tls fs-7ddf5f1d:/ efs

これで二つのEC2インスタンスにAmazon EFSをアタッチできました。

テスト

最後にアタッチしたファイルシステムをテストしてみましょう。
インスタンシAに新しいファイルを作成します。
ファイル:ebs_file.txt

$ cd efs/
$ sudo touch ebs_file.txt

確認してみましょう。

$ ll
total 4
-rw-r--r-- 1 root root 0  7月 31 18:51 ebs_file.txt

インスタンスBも確認してみたら何も作成しなくても同じファイルが作成されてました。
これでEFSが二つのインスタンスに共有できているのを確認しました。

3. まとめ

今回のブログでAmazon EFS作成し、テストしてみました。
簡単な設定をすることで共有できるのが面白いと思いました!