Skip to content

Instantly share code, notes, and snippets.

@ryanmaclean
Last active March 4, 2024 18:15
Show Gist options
  • Save ryanmaclean/c873c9a86f0bc3ee3a260882e73edecb to your computer and use it in GitHub Desktop.
Save ryanmaclean/c873c9a86f0bc3ee3a260882e73edecb to your computer and use it in GitHub Desktop.
Mount EFS on Ubuntu Linux

EFS Mounting on Ubuntu

Get EFS ID

aws configure set preview.efs true
aws efs describe-file-systems --profile TEST --region us-east-2
{
    "FileSystems": [
        {
            "SizeInBytes": {
                "Timestamp": 71990.0, 
                "Value": 614
            }, 
            "Name": "Shared-Storage-TEST", 
            "CreationToken": "console-ac435345", 
            "CreationTime": 14723446.0, 
            "FileSystemId": "fz-83A2", 
            "NumberOfMountTargets": 2, 
            "LifeCycleState": "available", 
            "OwnerId": "3423349"
        }
    ]
}

To get only the ID: aws efs describe-file-systems \ --profile TEST \ --region us-east-1 | \ grep FileSystemId | \ cut -f 4- -d '"' | \ cut -f -1 -d '"'

Or with jq installed:

aws efs describe-file-systems --profile TEST --region us-east-1 | jq -r ".FileSystems[] | .FileSystemId"

Install NFS Client

sudo apt-get install nfs-common

Mount the EFS Storage

mkdir efs-mount-point
sudo mount -t nfs4 -o vers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).file-system-id.efs.$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}').amazonaws.com:/   ~/efs-mount-point

For example:

sudo mount -t nfs4 -o vers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-ebeb2f234242.efs.$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}').amazonaws.com:/ ~/efs-mount-point2
@benbieler
Copy link

Run this on ubuntu:

sudo apt-get update && \
sudo apt-get -y install git binutils && \
git clone https://github.com/aws/efs-utils && \
cd efs-utils && \
./build-deb.sh && \
sudo apt-get -y install ./build/amazon-efs-utils*deb 

@samazgor
Copy link

Run this on ubuntu:

sudo apt-get update && \
sudo apt-get -y install git binutils && \
git clone https://github.com/aws/efs-utils && \
cd efs-utils && \
./build-deb.sh && \
sudo apt-get -y install ./build/amazon-efs-utils*deb 

Ya this one is more accurate.

@alanivey
Copy link

alanivey commented Dec 8, 2023

I used docker to keep from adding the build-related packages to my system:

# Build and install amazon-efs-utils deb
# https://docs.aws.amazon.com/efs/latest/ug/installing-amazon-efs-utils.html#installing-other-distro

EFS_DEB_BUILD="$( mktemp --directory )"

docker run --rm -v "$EFS_DEB_BUILD":/deb ubuntu:22.04 bash -c 'apt-get update && apt-get install -y binutils git && git clone https://github.com/aws/efs-utils && cd efs-utils && ./build-deb.sh && cp -v build/amazon-efs-utils-*.deb /deb/'

# Prevents error about user '_apt' from not having access
chmod --changes a+rx "$EFS_DEB_BUILD"

apt-get install -y "$EFS_DEB_BUILD"/amazon-efs-utils-*.deb

rm -rvf "${EFS_DEB_BUILD:?}"

unset EFS_DEB_BUILD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment