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回目)

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

プレビュー版のEFSを有効

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

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

 

EFSの作成

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

ファイルシステムの作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[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 ~]$

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[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タグ付け

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

1
2
3
[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タグ付け確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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 ~]$

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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 ~]$

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[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はインストール済みだったので本作業は不要でした。

1
$ sudo yum install -y nfs-utils

マウントする

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

1
2
3
4
5
[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で実施します。

アンマウント

1
2
3
4
5
6
7
8
9
10
11
12
13
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 ~]$

マウントターゲット削除

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

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

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

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

1
2
3
4
5
6
7
8
9
[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 ~]$

ファイルシステム削除

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

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

1
2
3
[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の操作に慣れておくと運用の幅も広がるのでおすすめです。

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

 

 

投稿者プロフィール

スカイブロガー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Time limit is exhausted. Please reload CAPTCHA.