こんにちは!
クラウドインテグレーション部(CI部)技術2課の反町です。
今回は、EFSを初めて利用する機会をいただけたので、EFSを構築してEC2インスタンスからマウントする手順をまとめてみました。
マウントはEC2構築時にユーザーデータに組み込むことでマウントの自動化が可能でしたので利用してみました!!
EFSについて
Amazon Elastic File System FS (Amazon EFS) は、Amazon EC2、Amazon ECS、およびAWS Lambdaから同時にアクセスすることができる、ファイルシステムです。
詳細はAWS公式ドキュメントをご参照ください。
Amazon Elastic File System とは何ですか? - Amazon Elastic File System
今回の構成
今回作成したリソースは以下で、プライベートサブネットに配置されたEC2とパブリックサブネットに配置されたEC2の両方からマウントして利用できるようにすることが目標です。EC2の作成手順は省略します。
EC2(Linux):2台
EFS(冗長構成):1つ
EFSの構築
1. EFSコンソールから「ファイルシステムの作成」をクリックします。
2. ファイルシステムの作成ウィンドウが表示されるので「カスタマイズ」をクリックします。
3. 名前を入力し、その他はデフォルトで「次へ」をクリックします。
4. ネットワークを選択して、マウントターゲットを作成したいサブネット(EC2が配置されるサブネット)とEC2からの接続のみを許可したセキュリティグループを選択し「次へ」をクリックします。
5. ファイルシステムポリシーは空欄で「次へ」をクリックします。
6. 設定を確認して「作成」をクリックします。
7. ファイルシステムが作成されたことを確認します。
EC2構築とマウント
1. EC2コンソールから「インスタンスを起動」をクリックします。
2. AMIやインスタンスタイプなどを指定して、インスタンスの詳細設定画面まで移動します。
3. EFS構築時に作成したマウントターゲットの存在するVPCとサブネットを選択します。
4. ファイルシステムの追加をクリックし、先ほど作成したEFSを選択します。※追加のセキュリティグループのところはEFS構築時にセキュリティグループを作成しているのでチェックを外します。
5. ユーザーデータの部分にEFSマウントに必要なコマンドが追加されていることを確認して「次のステップ:ストレージの追加」をクリックします。
6. ストレージ、タグ、セキュリティグループを設定して「確認と作成」→「起動」します。
動作確認
1. EC2コンソールの「作成したEC2」を右クリック、「インスタンスの設定」>「ユーザーデータの編集」からEFSをマウントしたディレクトリを確認します。
2. SSHでインスタンスにログインします。※今回はセッションマネージャーを利用してAWSコンソールから接続しています。
3. EFSをマウントしたディレクトリに移動します。
cd [ディレクトリパス]
4. 以下コマンドを実行してディレクトリの中身が空であることを確認します。
ls -al
実行例
drwxr-xr-x 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..
5. テストファイル作成のため、権限を変更します。
sudo chmod go+rw .
6. テスト用のテキストファイル「test-file.txt」を作成します。
touch test-file.txt
7. ディレクトリの一覧を表示してファイルが作成されていることを確認します。
ls -l
8. 再起動後も自動マウントされるように構成されているか確認するため、再起動します。※数分待ちます
sudo reboot
9. 再度SSHでインスタンスにログインします。
10. EFSをマウントしたディレクトリに移動します。
cd [ディレクトリパス]
11. ディレクトリの一覧を表示して作成したファイルが存在していることを確認します。
ls -l
構築した2台のEC2に同様の手順を実施したところ両方のインスタンスからマウントすることができました~!
まとめ
今回はEC2を手動作成する中でユーザーデータの中にマウントコマンドを組み込む方法で手順を記載しました。ほかにもEC2を構築してOS内にて手動でマウントする方法やCloudFormationにユーザーデータを組み込んでマウントする方法など、やり方はほかにもあるみたいです。なので、いつかはEC2構築からマウントまですべて自動化できるCloudFormationへEFSマウントコマンドを組み込んでマウントする方法に挑戦したいなと思います!!