AWS EFSとは?

Amazon EC2(1台目) -> Amazon EFS(NFSマウント) -> Amazon EC2(2台名)

### EFSとは
マネージドサービス
一部で障害が起きたとしても、NFSが利用できなくなったり、NFSに保存したデータが消失したりすることを防止することができる
ストレージ容量は保存するファイルサイズ合計によって自動的に伸縮する

### 料金体制
標準ストレージクラスと低頻度アクセスストレージクラスの2つのストレージが用意されている

### S3との違い
ファイルストレージというタイプのストレージでOSでマウント可能なファイルシステム
S3はHTTPSなどでアクセス可能なエンドポイントを提供する

### demo
IAMでAmazonS3FullAccess, AmazonVPCReadOnlyAccess, AmazonEC2ReadonlyAccessを付与

$ ssh -i “~/.ssh/HOGEHOGE” -p xxxxx USER@FQDN
$ aws configure
$ cat .aws/config
[default]
output = json
region = ap-northeast-1
$ aws ec2 describe-vpcs

### NFSの作成
$ aws efs create-file-system –creation-token my-file-system
{
“SizeInBytes”: {
“ValueInIA”: 0,
“ValueInStandard”: 0,
“Value”: 0
},
“FileSystemArn”: “arn:aws:elasticfilesystem:ap-northeast-1:*:file-system/fs-*”,
“ThroughputMode”: “bursting”,
“CreationToken”: “my-file-system”,
“Encrypted”: false,
“Tags”: [],
“CreationTime”: 1646730547.0,
“PerformanceMode”: “generalPurpose”,
“FileSystemId”: “fs-*”,
“NumberOfMountTargets”: 0,
“LifeCycleState”: “creating”,
“OwnerId”: “*”
}

FileSystemIDをメモっておく

### mount target
aws efs create-mount-target –file-system-id ${filesystemId} –subnet-id ${submnetId} –security-groups ${sgId}

{
“MountTargetId”: “”,
“VpcId”: “”,
“AvailabilityZoneId”: “apne1-az1”,
“NetworkInterfaceId”: “eni-*”,
“FileSystemId”: “fs-*”,
“AvailabilityZoneName”: “ap-northeast-1c”,
“LifeCycleState”: “creating”,
“SubnetId”: “subnet-*”,
“OwnerId”: “*”,
“IpAddress”: “*”
}

### package インストール
$ sudo yum install -y nfs-utils
$ sudo mkdir ~/efs
$ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-*.efs.ap-northeast-1.amazonaws.com:/ ~/efs
$ sudo sh -c ‘echo “Hello Amazon EFS” > /home/ec2-user/efs/test’

なるほどー、冗長化してもEFSでマウントして同じものを見るのか…
仕組みは理解した