背景
s3fsのバージョンが1.79未満だとs3にアクセスできなくなるらしい。
参考:s3fs の利用者はいますぐバージョンを確認しないと使えなくなるかも?!
さっそくバージョン確認。
$ s3fs --v
Amazon Simple Storage Service File System V1.78 with OpenSSL
Copyright (C) 2010 Randy Rizun <rrizun@gmail.com>
License GPL2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
_人人人人人人人人人人人_
> ぎりアウト~!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
結論(忙しい方用)
S3バケット名にドットが入っている場合、s3fsバージョンアップは1.81までにする。
(それより上げると、今まで通りの指定では接続できなくなりました)
やったこと(詳しく知りたい方用)
s3fs のリポジトリによると、最新バージョンはv1.8.5らしい。
じゃあ最新を入れとけばええやろ、と軽率に決定。(ミス1)
まずは今入ってるやつ(1.78)を消すぞ
sudo su
# service httpd stop #念のため止めた
# cd /usr/local/src/s3fs-fuse-1.78
# make uninstall
# s3fs --v
# bash: s3fs: command not found #消えた?
新しいの(1.85)を入れるよ
アップデート対象のインスタンスにはgitが入っていなかったため、githubからzipを落としてSFTPアップロードしました。
zipを /usr/local/src
に置いて、
# unzip s3fs-fuse-master.zip -d s3fs-fuse-1.85
# rm -R s3fs-fuse-master.zip
# cd s3fs-fuse-1.85/s3fs-fuse-master/
# ./autogen.sh
# ./configure
# make
# make install
# s3fs --v
Amazon Simple Storage Service File System V1.85 (commit:unknown) with OpenSSL
Copyright (C) 2010 Randy Rizun <rrizun@gmail.com>
License GPL2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
1.85になったっぽい!
s3マウントしているディレクトリも参照できたため、OKとしました。(ミス2)
その後何が起きたか
s3fsをアップデートしたインスタンスをしばらく使わないため、停止。
後日起動してみたら、s3fsマウントに失敗…!?
原因は、
旧バージョンでマウントしたディレクトリはs3fsバージョンアップ後も維持されていた
↓
インスタンス停止によりアンマウントされる
↓
インスタンス起動時、新バージョンでマウントを試行するも失敗
という流れのようでした。
アップデート後にリマウントして確認していればこんなことにはならなかった…
s3fsのバージョンアップをしたらリマウントもしなきゃダメ絶対!!(→ミス2)
でもなんでマウントできないの?
マウントできない時に出たエラー
s3fs: BUCKET hoge.fuga.piyo -- cannot mount bucket with . while using HTTPS without use_path_request_style
with .
…?
確かにバケット名にドットを含んでいるなあと「s3 バケット名 ドット」で検索したところ
出るわ Amazon S3のバケット名にドットを使ってしまいました
出るわ S3のバケット名はよく考えて命名しましょう!
なんでバケット名にドット使ってしまったん…というお気持ちになりました。
マウントできないことについてもs3fsのFAQ に記載がありました。
v1.82からs3fsはhttps接続するようになったとのことで、その際にバケット名のドットが悪さをしているそうな。
当たり前だけど、軽率にバージョン上げまくっちゃダメ絶対!!(→ミス1)
マイナーバージョンアップだからいいかと思ったんだよ…
FAQによれば、その場合でも use_path_request_style
オプションとendpoint
オプションを指定すればいいらしいのですが
# s3fs "hoge.fuga.piyo:/foo-bar" "/mnt/s3" -oallow_other -ouse_cache="/tmp" -oiam_role="hoge_admin" -ouse_path_request_style -oendpoint="ap-northeast-1"
# ll /mnt/s3/
total 0 #マウントされていればここに何らかディレクトリが出てくるはず
エラーも何も吐かずにマウント失敗…!
-ouse_path_request_style
を指定しないと
前述のエラー cannot mount bucket with .
が出てくるため、指定することで何かが変わっていることは推測できますが、解決はしない。
この現象が起きないv1.81までのバージョンアップで妥協することとなりました。