Amazon LightsailからEFSをマウントしてみた
Amazon LightsailからEFSをマウントする機会があったのでブログに残します。
やること
ブログのタイトル通りですが、Amazon LightsailからEFSをマウントします。
Amazon LightsailはRDSやEFSのようなVPC内にあるリソースを使用するのにVPCピアリングを行う必要があります。
Amazon Lightsail の外部の AWS リソースを使用するために Amazon VPC ピア接続をセットアップする
なのでメイン作業としてはLightsailの作成とVPCピアリングの設定です。
EFSのマウント自体はNFSでEC2と同じようにマウントを行います。
IP アドレスを使用してマウントする
リソース作成
Lightsail作成
まずはLightsailを作成します。
LightsailはCloudFormation使用して作成しました。
参考ブログ:[アップデート] Amazon LightsailがCloudFormationに対応したのでYAMLでWordPress環境を作ってみた
CloudFormationテンプレート (ここをクリックしてください)
AWSTemplateFormatVersion: "2010-09-09" Description: Lightsail Stack Resources: WordPressServer: Type: AWS::Lightsail::Instance Properties: BlueprintId: amazon_linux_2023 BundleId: nano_2_0 InstanceName: al2023
AWS::Lightsail::Instance
BlueprintIdとBundleIdは以下のAWS CLIコマンドで確認することが可能です。
# BlueprintId aws lightsail get-blueprints # BundleId aws lightsail get-bundles
デプロイは以下のコマンドを実行しました。
aws cloudformation create-stack --stack-name CloudFormationスタック名 --template-body file://CloudFormationテンプレートファイル名
デプロイが完了すると以下の画像のように「al2023」というインスタンス名でLightsailが作成されます。
VPCピアリング
次はVPCピアリングを設定していきます。
設定は以下のドキュメントの手順で行います。
Amazon Lightsail の外部の AWS リソースを使用するために Amazon VPC ピア接続をセットアップする
まずは、Lightsailのコンソールへ移動します。
移動したら画面右上にある「Account」をクリックして移動します。
移動後、AWSアカウントや現在使用しているIAMユーザーなどの情報が表示されるので、その画面の「Advanced」をクリックします。
クリック後、画面中央にある「Enable VPC peering」にチェックを付けます。
「Enable VPC peering」にチェックを付けたらVPCのダッシュボードからピアリング接続を確認するとデフォルトのVPCに対して設定が行われていることが確認できます。
EFS作成
次はEFSを作成します。
EFSはデフォルトVPC内のサブネットを使用して作成します。
以下のCloudFormationテンプレートで作成しました。
CloudFormationテンプレート (ここをクリックしてください)
AWS::EFS::FileSystem
EFSの作成自体で特別なことは行っていません。
EFSのセキュリティグループの作成時にLightsailのプライベートIPを設定するようにしています。
LightsailのプライベートIPはマネジメントコンソールから確認することが可能です。
aws cloudformation create-stack --stack-name CloudFormationスタック名 --template-body file://CloudFormationテンプレートファイル名 --parameters ParameterKey=Vpcid,ParameterValue=デフォルトVPC ID ParameterKey=Subnet1,ParameterValue=デフォルトVPCのサブネットID ParameterKey=Subnet2,ParameterValue=デフォルトVPCのサブネットID ParameterKey=LightsailIP,ParameterValue=LightsailのプライベートIP/32
デプロイが完了するとEFSのダッシュボードからファイルシステムを確認することが出来ます。
マウント
リソース作成が完了したら実際にマウントします。
まずはEFSのマウントコマンドを確認します。
マネジメントコンソールから作成したEFSファイルシステムの詳細を開きます。
開いたら画面右上にあるアタッチをクリックします。
クリックしたら「IP経由でマウント」をクリックしてコマンドを確認します。
赤枠で囲った部分がマウントコマンドになります。
マウントコマンドを確認したらLightsailで実行します。
作成したLightsailインスタンスの画面から「Connect Using SSH」をクリックするとブラウザから接続することが出来ます。
接続したら以下のコマンドでマウントポイントを作成します。
sudo mkdir /mnt/efs
マウントポイントを作成したら上記手順で確認したコマンドのマウントポイント部分を変更して実行します。
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport EFSマウントターゲットIP:/ /mnt/efs
マウントコマンドを実行してエラーなどが出力されなければ以下のコマンドでマウントされていることを確認できます。
df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 224M 0 224M 0% /dev/shm tmpfs 90M 1.6M 88M 2% /run /dev/xvda1 20G 1.6G 19G 8% / tmpfs 224M 0 224M 0% /tmp tmpfs 45M 0 45M 0% /run/user/1000 172.31.77.36:/ 8.0E 0 8.0E 0% /mnt/efs
さいごに
Lightsailを使用していて、外部ストレージが欲しくなった際にEFSを簡単にマウントできることが分かりました。
ただし、LightsailのVPCピアリングで使用できるVPCがデフォルトのVPCだけなのが少し不便だと思いました。