Amazon EFSをElastic Beanstalkからお手軽にマウントする


はじめに

Amazon EFSでElastic Beanstalkを利用する方法は公式ドキュメントにも書いてあります。

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/services-efs.html

ですが、ファイルシステムを作るところからEBでやろうとしているので、無駄に複雑な感じになっています(複雑になっているのは、amazon-efs-utilsを使っていないというのも一因ですが)。

わざわざEFSを使おうとしているということは、基本的には複数のインスタンスからマウントすることを想定しているので、まずはEFSの管理画面からファイルシステムを作ってからEC2インスタンスを立ち上げようとするのが普通じゃないのかなぁと思うのです。


設定ファイル

ということで、ここでは既にEFSのファイルシステムが作成されていて、そのファイルシステムIDが環境変数(EFS_ID)にセットされていることを前提としたconfigを書いてみました。EFSを /mount/nfs にマウントしています。

こんな感じで、とりあえずうまくいきました。


.ebextensions/00_nfs.config

packages:

yum:
amazon-efs-utils: []

container_commands:
mount_nfs:
command: |
mountpoint -q /mnt/efs
if [ $? -ne 0 ]; then
mkdir -p /mnt/efs
mount -t efs "$EFS_ID":/ /mnt/efs
fi


commandsの実行タイミングでは環境変数が取得出来ないので、container_commandsで設定しています。