Automatically mount bucket with s3fs on boot

bootfstabfuses3fsubuntu-14.04

I use an Amazon S3 bucket to deliver some of my server's content.
I was able to mount it successfully, and grant Apache rights over it, but can't get it mounted properly at reboot.

I updated my /etc/fstab with this line, but nothing happens when I boot

s3fs#my-bucket-name /mnt/s3_bucket fuse allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0

So, I tried another way, commented said line, and just put my command line in /etc/init.d/local :

#!/usr/bin/env bash
s3fs -o allow_other,uid=33,gid=33,umask=227,use_cache=/root/cache my-bucket-name /mnt/s3_bucket

… didn't work either.

I ended up putting a cron, and now, it works, but it feels terribly hacky to me, and I wonder why mounting it at start doesn't work.

//Crontab
*/10 * * * * ~/mountBucket.sh 1>/dev/null

//Mount script
#!/usr/bin/env bash
if [[ -d /mnt/s3_bucket/someBucketVirtualDirectoryName ]] ; then echo 'Bucket already mounted' ; else s3fs -o allow_other,uid=33,gid=33,umask=227,use_cache=/root/cache my-bucket-name /mnt/s3_bucket ; fi 1>/dev/null

Is there something I missed ?

I'm Using Ubuntu 14.04.4 LTS, with Fuse 2.9.2


EDIT :
Here is another unrelated, yet important performance issue I had to figure out by myself:

If your system includes locate and/or mlocate (and Ubuntu 14.04 does), you may want to add an exception, so that it does NOT scan your bucket.
I had to modify both my /etc/updatedb.conf and /etc/cron.daily/locate, adding " /mnt/my-bucket-name" to PRUNEPATHS and " fuse.s3fs" to PRUNEFS
I suppose adding fuse.s3fs should be enough, but… no time to take risks right now 🙂

Best Answer

You want to add _netdev to your fstab:

s3fs#my-bucket-name /mnt/s3_bucket fuse _netdev,allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0