yujiro's blog

エンジニアリング全般の事書きます

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 というのがあるらしく、そちらも紹介します。

参考

http://dotnsf.blog.jp/archives/1000485676.html

http://blog.dateofrock.com/2012/02/s3.html