はじめまして。はなはだ簡単ですが、自分のためのメモとして作業記録を記事にしてみました。
作業の目的
AWS EC2からユーザーデータを使いEC2インスタンス作成時にEFSをマウントするようにします。ECSなどを使用している際にも参考になると思います。
AWS EFS(Elastic File System)について
AWS クラウドサービスおよびオンプレミスリソースで利用できる、シンプル、スケーラブル、伸縮自在なファイルストレージです。
Amazon Elastic File System (Amazon EC2のファイルストレージサービス) | AWSより
EFSは比較的新しいサービスで、複数のEC2インスタンスからNFSマウントできるディスク装置です。
環境
EC2のOSはAmazon Linuxが前提です。
ユーザーデータについて
EC2のユーザーデータは、「Linux インスタンスの起動時に実行するコマンド」を指定できる項目のことです(ちょっとわかりにくいネーミングですね)。
ユーザーデータの記載場所は下記になります。
- EC2インスタンスの作成時
- 既存のEC2インスタンスの変更時
セキュリティグループ
事前にEFSファイルシステムのセキュリティグループで下記のアクセスを許可してください。
FROM: EC2インスタンスのセキュリティグループ
PORT: TCP 2049(NFS)
ユーザーデータ サンプル
以下のスクリプトを「ユーザーデータ」に入力します。
#!/bin/bash
# 変数設定(EFSのIDとマウントするディレクトリパス)
file_system_id_01=fs-12345678
efs_directory=/mnt/efs
# ディレクトリ作成、/etc/fstab編集
mkdir -p $efs_directory
echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab
# マウント
mount -a -t efs defaults
「変数設定」のEFSファイルシステムのIDとマウントするディレクトリパスは、環境に合わせて変更します。
うまくいくと下記のようになります。EFSファイルシステムは最後の行です。
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 92K 2.0G 1% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/xvda1 7.8G 2.4G 5.3G 31% /
127.0.0.1:/ 8.0E 0 8.0E 0% /mnt/efs
動作しないとき
下記ユーザーデータのログを確認してください。
/var/log/cloud-init-output.log