AWS EFSはセキュリティグループの設定さえ間違えなければ簡単に使える

可変型ボリュームEFSを使おうと思って悪戦苦闘した時のメモ.一番ハマったのはセキュリティグループのインバウンドルールの設定だった.

セキュリティグループの作成

何はともあれここからはじめよう.AWSを普段遣いしている人は既存のセキュリティグループがいくつもあると思うが,新規で作成するのが無難.

EC2のコンソールに入って,左側のメニューからセキュリティグループを開く.

EC2コンソールの左側にあるセキュリティーグループを開く

そして,右上の「セキュリティグループを作成」のボタンを押し,セキュリティグループ名と,説明と,VPC(大抵の場合デフォルト設定のはず)を入力.今回は下のスクショにように設定.あとで便利なので,ついでにTagsも設定しておこう.インバウンドルールを追加し,ソース(0.0.0.0/0など)を設定しないとエラーがでるのでこれも設定しておく(スクショは設定前の状態).

セキュリティグループの設定(スクショはインバウンドルール設定前の状態なので,適当に追加)
タグを設定しておくとあとで便利

ここまでできたら,右下のボタンを押して作成を完了させる.

そして,ここで作成したセキュリティグループのインバウンドルールの設定を変更する.

太字で強調したのは,この工程が最重要ポイントだからだ.

まずポート範囲を2049に設定,次にソースの横の四角をクリックし,先ほど作成したセキュリティグループのタグを打ち込む(私の場合,”machinelearning”を打ち込んだ).すると水色の四角が表示され,設定が完了.あとは,右下のルールを保存を押せば完了.あと,ssh 22のインバウンドルールもここで設定しておくとよいかも.

わざわざセキュリティグループを作成した後に,セキュリティグループのインバウンドを設定したのは,1度目の作成の際,そのセキュリティグループがソースの候補に現れないためだ.当たり前のことだが,一旦作成を完了させないと,ソースの候補にでてこないのだ.

セキュリティグループの中にインバウンドのソースで同じセキュリティグループを設定するのは変に思うかもしれない.しかしながら,EFSのネットワークの設定とEC2インスタンスのインバウンド設定の整合性をとらねばならないので,仕方がない.

EFSの設定

コンソールを開き,案内に沿ってEFSを作成.EFSの設定項目は比較的少ないので,ちゃちゃっと決めてしまう.後からでも変更可能な設定が多いので,失敗を恐れる必要はそれほどない.

ここで気をつけなければならない設定は,ネットワークである.

自身でアベイラビリティーゾーンを追加し,セキュリティグループを設定する.この時設定するのが,前の手順で作成したセキュリティグループである(何度もいうが私の場合”machinelearning”).

EC2インスタンスの作成

ここまできたら最終段階だ.セキュリティグループの設定などは,インスタンス作成時に案内に沿ってやるのも良いが,ここでは,通常のインスタンスを作成したと仮定し,作成した後の設定変更によってEFSをつなぐ.

ただひとつ作成の際に注意せねばならないのが,セキュリティグループの設定である(何度もいうが私の場合”machinelearning”).ここで設定できていないせいで,私はハマった.

ここまでくればほぼ終了だ.

あとは,作成したインスタンスにsshなどでアクセスし,Amazon Linux以外のLinux OSの場合は,efs-utils(EFS マウントヘルパー)をgithubからクローン.

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

あとは,EFSをマウント.

mkdir efs
sudo mount -t efs -o tls fs-7f48a05f:/ efs

タイムアウトエラーなど,不具合がある場合はこちらのTIPSで解決方法を探す.

マウント後,vim hoge.txtなどで書き込めるかを確かめ,ELSのコンソールからI/Oが確認できれば,成功だ.

私の場合はマウントした後のefsフォルダの権限を変更している.

sudo chown -R ubuntu:ubuntu ./efs
Pocket