はじめに
掲題通り。 よく忘れて、都度検索してしまうのでメモ。
Amazon Linux 2 での動作させることを想定。
準備 (EFS以外のリソース)
-
EFS を作成する VPC で「DNS解決の有効化」および「DNSホスト名を有効化」しておく
- ウィザードなどに頼らずにVPCを作成した場合、デフォルトでDNSホスト名が無効になっているため注意
- 単にDNSホスト名を有効化しただけだと、なぜか反映されない時があったが、その時は改めて「DNS解決」および「DNSホスト名」を無効化⇒有効化したら反映された
- EFS へのアクセス元からの
TCP: 2049
インバウンドアクセスを許可するセキュリティグループを作成しておく- ここでは名前を
efs
とする。
- ここでは名前を
EFS の作成
Management Console から利用するVPCを選んで作成していく。
この時、EFSのマウントターゲットを指定する際、先の手順で作成したセキュリティグループ efs
を指定してアクセスを許可する。
EFSのマウントターゲットのsubnetを指定するが、Q. 作成時のsubnet指定は、EFSをマウントするEC2インスタンスが所属しているsubnetを選択すればよいですか? の回答によれば、基本はメインで利用するインスタンスから近いサブネットを指定する のが良いようだ。 ただし、もちろん別のサブネットであっても、アクセスの条件を満たしていればアクセスは可能。
準備
amazon-efs-utils
をインストール。
$ sudo yum -y install amazon-efs-utils
起動時にEFSをマウントするようにする
サーバー上のマウントポイントに sudo mkdir -p /mnt/efs
で空ディレクトリを作成。 その後 /etc/fstab
に以下を追加。
# フォーマット
<EFSのファイルシステムID>.efs.<リージョン>.amazonaws.com:<EFSのマウントポイント> <ローカルのマウントポイント> efs tls,noresvport,_netdev 0 0
# 具体例: EFSの / をローカルの /mnt/efs にマウントする
# fs-0123456789abcdef.efs.ap-northeast-1.amazonaws.com:/ /mnt/efs efs tls,noresvport,_netdev 0 0
AWSマウントヘルパに記載のある -o tls
に対応する部分がここ。 実際には IAM 認証の場合は暗号化設定が必要なので、この場合に利用する方法が紹介されている。
2023/09/20 追記
暗号化前提でよいと思うので defaults を tls に変更。 また、自動的再マウントオプションがない場合に AWS Health Dashboard に警告が届いたので、再マウントオプション noresvport
を追加。
参考