{EC2}Amazon EC2 での Amazon EFS の使用

https://docs.aws.amazon.com/ja_jp/efs/latest/ug/wt1-getting-started.html
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AmazonEFS.html
https://dev.classmethod.jp/articles/ec2-efs-mount-for-beginner/
https://qiita.com/satton6987/items/db79272a5ce9fb5706dd


前提: 
作業簡略化のため
NFSとEC2に同じデフォルトセキュリティグループを割り当てる
デフォルトセキュリティグループに、inboundで2049(NFS)の許可を追加する

EFSとEC2インスタンスはAZ-aに作成

 

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version


-- 2. テスト用EC2インスタンス作成

aws ec2 run-instances \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]' \
--subnet-id subnet-11111111111111111 \
--security-group-ids sg-11111111111111111

 


-- 3. EFS ファイルシステムの作成

aws efs create-file-system \
--performance-mode generalPurpose \
--availability-zone-name ap-northeast-1a \
--no-backup

aws efs describe-file-systems

 

-- 4. マウント・ターゲットの作成

aws efs create-mount-target \
--file-system-id fs-11111111111111111 \
--subnet-id subnet-11111111111111111 \
--security-groups sg-11111111111111111

aws efs describe-mount-targets --file-system-id fs-11111111111111111


-- 5. ファイルシステムを EC2 インスタンスにマウント

テスト用EC2インスタンスSSH接続

sudo su -

yum -y update
yum -y install nfs-utils
mkdir /test


ファイルシステムDNS名:
[ファイルシステム ID].efs.[awsリージョン].amazonaws.com

df -h
mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-11111111111111111.efs.ap-northeast-1.amazonaws.com:/ /test
df -h

ls -l /test
echo testfile1 > /test/testfile1
ls -l /test
cat /test/testfile1

df -h
umount /test
df -h


-- 6. OS再起動時の自動再マウント設定

yum -y install amazon-efs-utils

vim /etc/fstab

fs-11111111111111111:/ /test efs tls,_netdev  0  0

df -h
mount -a
df -h

reboot

127.0.0.1にマウントしているように見えるが、EFSにマウントされている

インスタンス停止→起動でも確認済み

 

-- 7. クリーンアップ


-- EC2インスタンスの削除
aws ec2 describe-instances

aws ec2 terminate-instances --instance-ids i-11111111111111111


-- マウント・ターゲットの削除
aws efs describe-mount-targets --file-system-id fs-11111111111111111

aws efs delete-mount-target --mount-target-id fsmt-11111111111111111

-- EFS ファイルシステムの削除
aws efs describe-file-systems

aws efs delete-file-system --file-system-id fs-11111111111111111