【トラブルシューティング】EFSをEC2へのアタッチする時にFailed to resolve server ~が出たら

記事タイトルとURLをコピーする

こんにちは!

すっかりTik Tokに飽きてしまった松井です。

EFSをEC2にアタッチするにあたってちょっとつまずいてしまったのでまとめておきます。

EFSのセットアップについては、以下ドキュメントを参考にしてください。

チュートリアル: Amazon EFS ファイルシステムを作成し、Amazon EC2 を使用して AWS CLI インスタンスにマウントする - Amazon Elastic File System

EC2にEFSをアタッチする場合、対象EC2と同一のVPC・サブネット・アベイラビリティゾーンにEFSを作成する必要があります。

そして、EFSにアタッチするセキュリティグループは対象EC2のセキュリティグループに対してインバウンドルールで2049ポートを開放しておくのが必須です。

f:id:swx-matsui:20210412152809p:plain
EFSのコンソール画面

上記設定に間違いがないことを確認した上で、EC2にログインし、EFSをアタッチするためのコマンドを入力すると以下のようなエラーが発生しました。

# マウントする用のディレクトリ作成
mkdir ~/efs-mount-point
# ディレクトリ配下にEFSをマウント
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <span style="color: #ff0000">mount-target-DNS</span>:/ ~/efs-mount-point
mount.nfs4: Failed to resolve server [mount-target-DNS]: Name or service not known
mount.nfs4: Operation already in progress

mount-target-DNSが見つからなかったとエラーがでました。

調べてみると問題は、VPCのDNS名前解決が[有効]・DNSホスト名が[無効]になっていました。 なので、以下のVPCのコンソール画面から[アクション]> [DNS ホスト名を編集]> [有効化]にチェック で変更しました。

f:id:swx-matsui:20210412153910p:plain
VPCのコンソール画面

すると無事、コマンドが通り、EFSがマウントされていることが確認できました。

df -m

[mount-target-DNS]:/ 8796093022207     0 8796093022207    0% /home/ec2-user/efs-mount-point

なぜハマったか

以下ドキュメントの記載にある通り、自作したVPCに関しては、デフォルトでVPCのDNS名前解決が[有効]・DNSホスト名が[無効]で作成されるようになっているようでした。

aws.amazon.com

・Amazon VPC ウィザードを使って作成されたものではない、デフォルト以外の仮想プライベートクラウドの場合、このオプションはデフォルトで無効になっています。

VPCのDNS名前解決が[有効]・DNSホスト名が[無効]になっているということは、同一VPC内のサーバーに対して名前解決が出来ない状態となってしまうため、今回のようにEFSのDNS名を名前解決出来なかったのです。

もうひとつの理由としては、最初にご紹介したチュートリアルの手順を見落としておりました。 これは、反省です。。。。。

チュートリアル: Amazon EFS ファイルシステムを作成し、Amazon EC2 を使用して AWS CLI インスタンスにマウントする - Amazon Elastic File System

アカウントで作成したデフォルトの VPC またはカスタム VPC を使用できます。このウォークスルーでは、デフォルトの VPC 設定が機能します。ただし、カスタム VPC を使用する場合は、次の点を確認してください。

DNS ホスト名は有効です。詳細については、『https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-viewing』の「Amazon VPC ユーザーガイドVPC の DNS サポートを更新する.」を参照してください。

みなさんもVPCを新しく作成する際に気をつけて見てみてください。

松井 宏司

営業→起業→エンジニア