Vagrantでs3fs でバケットをマウントしてはまったこと
vagrant 上でs3fs を使ってAWS S3のバケットをマウントしてみた。
はまった点は大きく3点
- CentOS 6.5だと、fuse のバージョンがyum だと古いので、http://fuse.sourceforge.net から最新版を持ってきてインストールする必要がある。
- vagrant だとOS時間が簡単にずれるので、マウント時にAPIからはじかれる
// JSTに設定し、ntpで時間をアップデート $ sudo cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime $ sudo ntpdate ntp.nict.jp //時間を合わせる
- syslogにリージョンが違うよのエラーがでる。
Apr 8 09:52:19 localhost s3fs: Could not connect wrong region us-east-1, so retry to connect region ap-northeast-1.
// endpoint を指定してマウント。オプションの指定の仕方がわからずはまった。 sudo /usr/bin/s3fs {bucket_name} /mnt/s3 -o allow_other,default_acl=private -o endpoint=ap-northeast-1
//fstabに書く場合はこんな感じ /usr/bin/s3fs#{bucket_name} /mnt/s3 fuse rw,allow_other,uid=501,gid=501,default_acl=private,endpoint=ap-northeast-1 0 0
2015/6/3 追記 AWS EC2だとendpointを指定すると逆にダメでした。ローカルのvagrant だからなのかもしれません。。
default_acl を public-read にすると、
https://s3-ap-northeast-1.amazonaws.com/some-bucket-name/file のようにウェブ上から閲覧できる形で
ファイルがS3上に保存されます。
- おまけ
バケットのパーミッションはデフォルトの自分だけがアクセスできるようになっていればよい。
Authenticated Users などを追加でパーミッションに追加すると、リクエストが署名されていないといけない形
になり、マウントが失敗するので注意。
以上