Amazon Elastic File System (Amazon EFS) is a scalable file storage for EC2 and services that run on EC2 (for example Kubernetes clusters). The device is accessible on Linux via the NFS protocol and can be used my multiple instances and pods at the same time.
For more information on EFS visit AWS documentation.
Step one: Gather information
In our case ti is pretty straightforward. Ubuntu instance in the same VPC as the EFS and a DNS name of the file system we want to access. The format uses following convention:
And the exact URL is available on AWS console AWS home under filesystem's DNS name or via cli
Step two: Install the NFS Client for Linux
$ sudo apt-get update
$ sudo apt install nfs-kernel-server
Step three: Mount the file system on EC2 instance.
Create (if you don't have already) a mount point for the EFS
$ sudo mkdir -p /mnt/efs-mount-point
Mount the EFS share on the instance
$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-DNS:/ /mnt/efs-mount-point
Now we have a mounted Amazon EFS file system on Ubuntu EC2 instance.
Keep in mind that command mounted doesn't persist across reboots. if you want it to be permanently accessible you have to add it to the fstab.
efs mount.nfs: Connection timed out
This error can occur because either the Amazon EC2, mount target security groups or file system access are not configured properly.
For more troubleshooting tips you can visit: