アプリケーションのログや大容量のファイルを扱う場合に
S3のBucketをサーバーにマウントして利用する方法です。
s3fsを使用してマウントしますが、FUSEをベースに作られているためこれらをインストールします。
1.事前準備
FUSEに必要なライブラリをインストールします。
$ yum install gcc $ yum install gcc-c++ $ yum install libstdc++-devel $ yum install pkgconfig $ yum install make $ yum install curl-devel $ yum install libxml2-devel
2.FUSEのインストール
http://sourceforge.net/projects/fuse/files/fuse-2.X/
こちらからソースをダウンロードしてコンパイルします。
CentOS5で利用する場合はmountコマンドでno-canonicalizeオプションがないので、FUSE2.8.5を利用する必要があります。
CentOS6の場合は最新版を利用するとよいでしょう。現時点で2.9.2が最新です。
$ cd /usr/local/src $ wget http://sourceforge.net/projects/fuse/files/fuse-2.X/2.9.2/fuse-2.9.2.tar.gz/download $ tar xvf fuse-2.9.2.tar.gz $ cd fuse-2.9.2 $ ./configure $ make $ make install
3.FUSEの設定
インストールしたFUSEの関連モジュールを読み込むための設定をします。
$ echo /usr/local/lib >> /etc/ld.so.conf $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig $ ldconfig
/etc/profile.d fuse.sh export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
4.s3fsのインストール
https://code.google.com/p/s3fs/downloads/list
ここからソースをダウンロードしてコンパイルします。現時点で1.61が最新です
$ cd /usr/local/src $ wget https://s3fs.googlecode.com/files/s3fs-1.61.tar.gz $ tar xvf s3fs-1.61.tar.gz $ cd s3fs-1.61 $ ./configure $ make $ make install
5.s3fsの設定
S3へのアクセスキーを記述したファイルを作成します。アクセスキーIDとシークレットアクセスキーをコロン(:)でつなぎます。
$ echo AccessKeyID:SecretAccessKey > /etc/passwd-s3fs $ chmod 600 passwd-s3fs
パーミッションを正しく設定しないと
s3fs: credentials file /etc/passwd-s3fs should not have others permissions
というエラーになります。
6.マウント
今回は various-logs というS3のバケットを /s3 というディレクトリにマウントします。
$ cd / $ mkdir /s3 $ modprobe fuse $ s3fs various-logs /3 -o default_acl=public-read -o allow_other
/bin/mount: unrecognized option `--no-canonicalize'
のエラーが出る場合はFUSE2.8.5を使用してください。
すでに別バージョンをインストールしている場合はFUSEのディレクトリに移動して
$ make uninstall
でアンインストールできます。
7.再起動時の設定
サーバー再起動時にfstabに記録します。
$ vim /etc/fstab s3fs s3-bucket-name /s3 fuse allow_other,default_acl=public-read 0 0