#はじめに
先日、EC2にEFSをマウントしようとした際にマウントが失敗し、少しハマったことがあったので、記録です。
#事象
以下に発生した事象を示します。
###ハマる前までに行った内容
まず前提として、EFSをアタッチするEC2インスタンスを作成。
設定項目 | 設定値 |
---|---|
リージョン | 東京 |
VPC | 10.0.0.0/21(名前:MyVPC1) |
AZ | ap-northeast-1a |
サブネット | 10.0.0.0/24(名前:PublicSubnet1) |
インスタンスタイプ | t2.micro |
セキュリティグループ | 全てのSSH接続を許可(名前:EC2-SG) |
その後、EFSのコンソールから、[ファイルシステム]>[ファイルシステムの作成]をクリック。
そしてEC2インスタンスと同じVPCを指定してEFSを作成。
EFSが作成されたことを確認した後、EC2にログインしてEFSクライアントのインストールを実施。
$sudo yum install -y amazon-efs-utils
次にEFSをマウントするディレクトリを用意。
$mkdir efs-test
ここまでがマウント前までに行った内容になります。
###ハマった内容
作成したEFSのファイルシステムIDを指定して、mountコマンドを実行。
しかし待てども待てどもマウントされず・・・。
$sudo mount -t efs -o tls fs-07d78a63cf0e92891:/ efs/efs-test
暫くすると結局エラーが返ってきてしまいました。どうやらファイルシステムIDが取得できていない様子。
b'mount.nfs4: mount system call failed'
#原因
原因はEFSのマウントターゲットにアタッチされているセキュリティグループにありました。
EFSのマウントターゲットとは、下記図の赤枠の部分のことです。
EFSのコンソールから、[ファイルシステム]>[作成したファイルシステム名]>[ネットワーク]>[管理]をクリックして確認してみると、マウントターゲットにVPCのデフォルトセキュリティグループがアタッチされています。
そしてデフォルトセキュリティグループのインバウンドルールを確認してみると、ソースに自身のセキュリティグループが指定されています。
つまり、同じデフォルトセキュリティグループをアタッチしたEC2からはインバウンド通信を行うことが出来ますが、今回EC2にはEC2-SGという別のセキュリティグループを設定しているため、マウントターゲットと通信が行えず、マウントに失敗するわけです。
#対処法
デフォルトセキュリティグループの代わりに、マウントターゲットにアタッチするEFS用のセキュリティグループを新規で作成します。
EC2のコンソールから、[セキュリティグループ]>[セキュリティグループを作成]をクリックし、セキュリティグループ名、説明、VPCを入力します。
タイプにNFS、ソースにEC2のセキュリティグループを指定したインバウンドルールを追加し、画面下の[セキュリティグループを作成]をクリックします。
これにより、EFS用のセキュリティグループの作成は完了です。
次にEFSのコンソールから、[ファイルシステム]>[作成したファイルシステム名]>[ネットワーク]>[管理]をクリックし、現在設定されているマウントターゲットを削除します。
そしてマウントターゲットを新たに追加し、先ほど作成したEFS用のセキュリティグループを指定して保存をクリックします。
これでマウントターゲットの設定は完了です。
もう一度EC2にログインし、マウントを実行してみます。
$sudo mount -t efs -o tls fs-07d78a63cf0e92891:/ efs/efs-test
今度はエラーもなく、成功した様子。
dfコマンドで確認してみると、ちゃんとマウントされていました!
$df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 483M 0 483M 0% /dev/shm
tmpfs 483M 460K 483M 1% /run
tmpfs 483M 0 483M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.6G 6.4G 20% /
tmpfs 97M 0 97M 0% /run/user/1000
127.0.0.1:/ 8.0E 0 8.0E 0% /home/ec2-user/efs-test
#最後に
EFSのマウントって簡単にできると思ってましたが、マウントターゲットとか、デフォルトセキュリティグループとか、ちゃんと理解していないとダメですね。
あらためて実際に手を動かすのって大事だなあと感じました。
この記事が誰かの助けとなれば幸いです。