AWS CLIでEFSを作成してみる

こんにちは、星です。

AWS EFSがついにGAリリースとなって各所が賑わっていますね。

検証ついでにAWS CLIでEFS(Amazon Elastic File System )を色々触ってみましたので共有したいと思います。

はじめに

EFSとはなんぞや

詳細な説明はコチラコチラの記事をご確認ください。

浅くまとめるとNFS経由で利用可能な共有ファイルシステムです。

 

やってみる

実際にやってみた内容

  • ファイルシステムの作成(DefaultVPC、1subnet)
  • EC2(Amazon Linux)にマウントしてファイルを作成
  • 後片付け

上記3本立てで進めていきましょう。

 

利用可能なコマンド

最新版のCLIバージョンで利用可能なコマンド一覧です(1.10.44)

今回は赤文字のコマンドを使用してEFSを作成します。

  • create-file-system
  • create-mount-target
  • create-tags
  • delete-file-system
  • delete-mount-target
  • delete-tags
  • describe-file-systems
  • describe-mount-target-security-groups
  • describe-mount-targets
  • describe-tags
  • help
  • modify-mount-target-security-groups

プレビュー版ということもあってコマンド数は少なめですね。

下準備

CLIを最新版にアップデートする(重要!)

CLIで作業する前に最新版へのアップデートをしておきましょう。重要ですね(2回目)

[ec2-user@ip-10-0-0-242 ~]$ sudo pip install -U awscli

プレビュー版のEFSを有効

サービスとしては正式リリース扱いですが、CLIはプレビュー版扱いなので有効化します。


[ec2-user@ip-10-0-0-242 ~]$ aws configure set preview.efs true [ec2-user@ip-10-0-0-242 ~]$ 

 

EFSの作成

いよいよCLIで作成をしていきます

ファイルシステムの作成


[ec2-user@ip-172-31-9-103 ~]$ aws efs create-file-system --creation-token "EFSFileSystemhoshi" --performance-mode "generalPurpose"

{

"SizeInBytes": {

"Value": 0

},

"CreationToken": "EFSFileSystemhoshi",

"CreationTime": 1467613674.0,

"PerformanceMode": "generalPurpose",

"FileSystemId": "fs-904fbb39",

"NumberOfMountTargets": 0,

"LifeCycleState": "creating",

"OwnerId": "xxxxxxxxxxxxxxxxx"

}

[ec2-user@ip-172-31-9-103 ~]$

ファイルシステムの作成確認


[ec2-user@ip-172-31-9-103 ~]$ aws efs describe-file-systems --creation-token "EFSFileSystemhoshi"

{

"FileSystems": [

{

"SizeInBytes": {

"Value": 6144

},

"CreationToken": "EFSFileSystemhoshi",

"CreationTime": 1467613674.0,

"PerformanceMode": "generalPurpose",

"FileSystemId": "fs-904fbb39",

"NumberOfMountTargets": 0,

"LifeCycleState": "available",

"OwnerId": "xxxxxxxxxxxxxx"

}

]

}

[ec2-user@ip-172-31-9-103 ~]$

Nameタグ付け

マネジメントコンソールの操作と同様にタグ付けもしておきます


[ec2-user@ip-172-31-9-103 ~]$ aws efs create-tags --file-system-id "fs-904fbb39" --tags "Key=Name,Value=testfs"

[ec2-user@ip-172-31-9-103 ~]$

Nameタグ付け確認


[ec2-user@ip-172-31-9-103 ~]$ aws efs describe-tags --file-system-id "fs-904fbb39"

{

"Tags": [

{

"Value": "testfs",

"Key": "Name"

}

]

}

[ec2-user@ip-172-31-9-103 ~]$

マウントターゲットの作成


[ec2-user@ip-172-31-9-103 ~]$ aws efs create-mount-target --file-system-id "fs-904fbb39" --subnet-id "subnet-125f7254"

{

"MountTargetId": "fsmt-fafa0c53",

"NetworkInterfaceId": "eni-83b7a5df",

"FileSystemId": "fs-904fbb39",

"LifeCycleState": "creating",

"SubnetId": "subnet-125f7254",

"OwnerId": "xxxxxxxxxxxxxx",

"IpAddress": "172.31.1.60"

}

[ec2-user@ip-172-31-9-103 ~]$

マウントターゲット作成確認


[ec2-user@ip-172-31-9-103 ~]$ aws efs describe-mount-targets --file-system-id fs-904fbb39

{

"MountTargets": [

{

"MountTargetId": "fsmt-05fd0bac",

"NetworkInterfaceId": "eni-963fbeeb",

"FileSystemId": "fs-904fbb39",

"LifeCycleState": "available",

"SubnetId": "subnet-29c92a4c",

"OwnerId": "xxxxxxxxxxxxxxxxx",

"IpAddress": "172.31.35.20"

}

]

}

[ec2-user@ip-172-31-9-103 ~]$

 

以上でAWS側でのEFS作成作業は完了です。

 

使ってみる

作成したEFSをEC2にマウントしてみます

NFSインストール

必要に応じてNFSをインストールします。Amazon Linuxはインストール済みだったので本作業は不要でした。


$ sudo yum install -y nfs-utils

マウントする

マネジメントコンソール上に書かれているマウント方法通りにマウントしてみます。


[ec2-user@ip-172-31-33-152 ~]$ sudo mkdir efs

[ec2-user@ip-172-31-33-152 ~]$ sudo mount -t nfs4 -o nfsvers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-9e14e037.efs.us-west-2.amazonaws.com:/ efs

[ec2-user@ip-172-31-33-152 ~]

マウント確認

マウントできました。EB(エクサバイト)なんて表示初めて見ました。

[ec2-user@ip-172-31-33-152 ~]$ df -h

Filesystem                                            Size  Used Avail Use% Mounted on

/dev/xvda1                                            7.8G  1.2G  6.6G  15% /

devtmpfs                                              490M   60K  490M   1% /dev

tmpfs                                                 498M     0  498M   0% /dev/shm

us-west-2b.fs-9e14e037.efs.us-west-2.amazonaws.com:/  8.0E     0  8.0E   0% /home/ec2-user/efs

[ec2-user@ip-172-31-33-152 ~]$

後片付け

うまいことマウントできましたので後片付け(削除)もCLIで実施します。

アンマウント


ec2-user@ip-172-31-9-103 ~]$ sudo umount efs

[ec2-user@ip-172-31-9-103 ~]$ df

Filesystem     1K-blocks    Used Available Use% Mounted on

/dev/xvda1       8123812 2720672   5302892  34% /

devtmpfs          500712      56    500656   1% /dev

tmpfs             509720       0    509720   0% /dev/shm

[ec2-user@ip-172-31-9-103 ~]$

マウントターゲット削除

マウントターゲット→ファイルシステムの順番で削除をします。

先にファイルシステムから削除しようとしてもエラーになるので注意です。


[ec2-user@ip-172-31-9-103 ~]$ aws efs delete-mount-target --mount-target-id "fsmt-fafa0c53"

[ec2-user@ip-172-31-9-103 ~]$

マウントターゲット削除確認


[ec2-user@ip-172-31-9-103 ~]$ aws efs describe-mount-targets --file-system-id "fs-904fbb39 "

{

"MountTargets": []

}

[ec2-user@ip-172-31-9-103 ~]$

ファイルシステム削除


[ec2-user@ip-172-31-9-103 ~]$ aws efs delete-file-system --file-system-id "fs-904fbb39"

[ec2-user@ip-172-31-9-103 ~]$

ファイルシステム削除確認


[ec2-user@ip-172-31-9-103 ~]$ aws efs delete-file-system --file-system-id "fs-904fbb39"

[ec2-user@ip-172-31-9-103 ~]$

以上で削除は完了です。

 

まとめ

コマンド数も少なく作成、削除まで簡単に実施することが出来ました。

プレビュー版なのでコマンド名、コマンド数が変更になる可能性もあります。

マネジメントコンソールでも数ポチで作成出来ますが、CLIの操作に慣れておくと運用の幅も広がるのでおすすめです。

敷居が高い分、色々調べながら触るのでサービスの理解度が深まるのも利点ですね。

 

 

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.