code build で EFS をマウントすると失敗する


aws の公式だと、原因を特定するのはawsビギナーには困難だったため、自分用のメモ

aws code build でEFS をマウントする必要があったので、マウントしようとすると「CLIENT_ERROR: mounting '127.0.0.1:/' failed. connection reset by peer」というエラーになる。

aws 公式に記載されている解決方法を実施しても治らず…

上記のとおり、セキュリティグループでEFSにアクセスできる設定は行ったし、同一subnet上にEFSも存在している。

結論から言うと、VPCのDNS名前解決をONにする必要がある(File System Mount Using DNS Name Fails)。

今回原因を特定できた方法は、自分構築したVPCで失敗し、CloudFormatinのテンプレートで構築したVPCで成功したため、設定を比較しながら特定することができた。
自分でAWS コンソールマネージャからvpcを構築すると、DNSの設定がデフォルトが'OFF'である。デフォルトがOFFのため、code build EFSがマウントできない。

fargate でDbのマイグレーションを行い、DBをマイグレーションしたDBからデータ構造の自動生成(ex: C# のentityframework 、java のjooq)をする際に、インスタンスを起動する必要がなく重宝すると思ったが、調べても同じ悩みを抱えている人がいなかったため、原因が特定するのに時間がかかってしまった。もしかして、データベースからコードの型の自動生成自体がレガシーなのか、それとも初歩すぎる問題で誰も詰まったりしないのかと思った(どっちでも自分的には精神的ダメージ)。