S3 をLinux にマウントする【s3fs編】
これできるって知った時はびっくりしました。
色々幅が広がりそうですよね。
手順をご紹介します。
環境
Ubuntu14.04
手順
必要なパッケージインストール
$ sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool
$ sudo apt-get install pkg-config libssl-dev
$ cd
s3fs ツールをインストール
$ git clone https://github.com/s3fs-fuse/s3fs-fuse
$ cd s3fs-fuse/
$ ./autogen.sh
$ ./configure --prefix=/usr --with-openssl
$ make
$ sudo make install
$ sudo sh -c "echo '[aws_access_key_id]:[aws_secret_access_key]' > /etc/passwd-s3fs"
※ aws_access_key_id
, aws_secret_access_key
に関しては各々のものをいれてください。
$ chmod 640 /etc/passwd-s3fs
マウント先作成
$ sudo su
$ mkdir /mnt/s3/
$ chmod 700 /mnt/s3/
マウントコマンド
$ s3fs [バケット名] /mnt/s3/ -o curldbg
※ このオプションはdebug 用。
これで $ df -h
とかするとマウントされていることが確認できます。
アンマウント
$ sudo umount /mnt/s3/
注意
バケット名には注意する。
S3の証明書は以下のようなワイルドカード証明書だけど、
*.s3-ap-northeast-1.amazonaws.com
ドットが入っているとダメです。
ドットが入っているバケット名でマウントコマンドを実行すると、Ubuntu の場合、/var/log/syslog
に以下が出力されます。
* SSL: no alternative certificate subject name matches target host name '[ドット含むバケット名].s3.amazonaws.com' * Closing connection 0 * SSLv3, TLS alert, Client hello (1): s3fs.cpp:s3fs_check_service(3800): unable to connect(host=https://s3.amazonaws.com) - result of checking service.
host 名と証明書の有効ホスト名が合ってないですよ、って言うエラーです。
感想
すげえ重たいです。
これより高性能な goofys というのがあるらしく、そちらも紹介します。