AWSのEC2インスタンス(Amazon Linux 2)にS3バケットを自動でマウントする手順のメモ。
EC2インスタンスを起動させる度にS3バケットを手動でマウントするのが面倒である為、S3バケットの自動マウントを試みた。
前回のメモ、S3バケットの認識と手動マウントは以下のリンク先。
http://d.hatena.ne.jp/debslink/20180714/1531577869
当方の環境は以下のとおり。
・EC2インスタンス: 1台。t2.micro (amzn2-ami-hvm-2.0.20180622.1-x86_64-gp2)
・S3バケット: 1台。
・IAMロール: hogeとする
・リージョン: ap-northeast-1a
EC2にS3バケットをマウントする手順
1.毎回毎回アンマウントとマウントを実行するのが面倒。
/etc/fstabをいじってEC2インスタンス再起動後も自動でマウントするよう設定してみた。
内容は以下のとおり。
$ cat /etc/fstab # $ cat /etc/fstab # UUID=76e177a9-8195-43cf-84ae-14ea371008b6 / xfs defaults,noatime 1 1 /mnt/swapfile none swap defaults 0 0 s3fs#jpmtksvaws99 /mnt/s3 fuse _netdev,allow_other,nonempty,multireq_max=500,uid=505,gid=503 0 0
2.ここでEC2インスタンスを再起動。
再起動完了後、dfコマンドを叩いてみると...
$ df Filesystem Size Used Avail Use% Mounted on devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 304K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 2.7G 5.4G 34% / tmpfs 99M 0 99M 0% /run/user/1000
...あれ? /mnt/s3が見えない。
EC2インスタンスからS3バケットの中を覗こうとしたら、エラーを吐いた。/mnt/s3の中が見えない。
$ ls -la /mnt/s3 | more ls: cannot access /mnt/s3: Transport endpoint is not connected
3.しかしmountコマンドを叩くとs3fsの行が出力された。/mnt/s3はマウントされているように見える。
$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=487052k,nr_inodes=121763,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) : hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M) debugfs on /sys/kernel/debug type debugfs (rw,relatime) mqueue on /dev/mqueue type mqueue (rw,relatime) nfsd on /proc/fs/nfsd type nfsd (rw,relatime) s3fs on /mnt/s3 type fuse.s3fs (rw,relatime,user_id=0,group_id=0,allow_other)
4./var/log/boot.logを覗いてみると、Mounted /mnt/s3が出力されている事が分かる。
$ sudo cat /var/log/boot.log : [ OK ] Reached target Local File Systems (Pre). Mounting /mnt/s3... [ OK ] Started Activation of DM RAID sets. [ OK ] Reached target Local Encrypted Volumes. [ OK ] Mounted /mnt/s3. [ OK ] Reached target Local File Systems. Starting Create Volatile Files and Directories... :
5.ここで/mnt/s3を一旦アンマウントし、再度マウントしてみる。
$ sudo umount /mnt/s3 $ sudo /usr/local/bin/s3fs [S3 bucket name] /mnt/s3 -o rw,allow_other,uid=1000,gid=1000,default_acl=public-read,iam_role="[IAM role name]"
6./mnt/s3がs3fsでマウントされている事が確認出来た。
しかしやりたいのは自動マウント。
Filesystem Size Used Avail Use% Mounted on devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 304K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 2.7G 5.4G 34% / s3fs 256T 0 256T 0% /mnt/s3
7.では、/etc/rc.d/rc.local に書いてみるのはどうだろう。
sudo vi /etc/rc.d/rc.local /usr/local/bin/s3fs [S3 bucket name] /mnt/s3 -o rw,allow_other,uid=1000,gid=1000,default_acl=public-read,iam_role="[IAM role name]"
/etc/rc.d/rc.localを開くとコメントアウト行に chmod +x /etc/rc.d/rc.localを打って実行権限を持たせる旨の記載が有る。
以下のコマンドを打ち、/etc/rc.d/rc.localスクリプトファイルに実行権限を与える。
$ ls -la /etc/rc.d/rc.local -rw-r--r-- 1 root root 613 Aug 4 21:16 rc.local <span style="font-size: 85%">$ sudo chmod +x /etc/rc.d/rc.local <span style="font-size: 85%">$ ls -la /etc/rc.d/rc.local -rwxr-xr-x 1 root root 613 Aug 4 21:16 /etc/rc.d/rc.local
8.再度EC2インスタンスを再起動。
再起動完了後、dfコマンドを叩いてみると...
$ df Filesystem Size Used Avail Use% Mounted on devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 304K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 2.7G 5.4G 34% / s3fs 256T 0 256T 0% /mnt/s3 tmpfs 99M 0 99M 0% /run/user/1000
/mnt/s3が見えた。
勿論、/mnt/s3配下のディレクトリやファイルも見る事が出来るのだが、ファイル10個程度を出力するまで5分前後も時間がかかった。
$ ls /mnt/s3/DJI_Spark total 1748455 d--------- 1 ec2-user ec2-user 0 Jul 6 22:58 . drwxrwxrwx 1 ec2-user ec2-user 0 Jan 1 1970 .. ---------- 1 ec2-user ec2-user 317703683 Jul 6 23:14 20180512.mp4 ---------- 1 ec2-user ec2-user 386020665 Jul 6 23:24 20180609.mp4 ---------- 1 ec2-user ec2-user 357315938 Jul 6 23:11 20180616.mp4 ---------- 1 ec2-user ec2-user 350183991 Jul 6 23:07 20180627.mp4 ---------- 1 ec2-user ec2-user 340331528 Jul 6 23:26 20180629.mp4 :