Amazon S3 をファイルシステムとして EC2 にマウントする方法
0 notes
Amazon S3 を EC2 でファイルシステムとしてマウントして、手っ取り早く利用したいときがあります。
FUSE と s3fs を使うことでそれが可能です。
※書かなくてもわかるとは思いますが、この方法は非公式です。自己責任でお試しあれ。
FUSE とは(引用:Filesystem in Userspace - Wikipedia)
Filesystem in Userspace(FUSE)は、Unix系オペレーティングシステムのローダブル・カーネル・モジュールの一種で、一般ユーザーがカーネルコードを修正することなく独自のファイルシステムを作成できる機能を提供する。
s3fs とは…FUSE 経由で Amazon S3 をローカルファイルシステムとしてマウントできるツール。
作業ログ
面倒なので root になります。
sudo su -
諸々インストール
yum -y install gcc-c++ make openssl-devel curl-devel libxml2-devel
FUSE をソースからインストール
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 xzvf fuse-2.9.2.tar.gz
cd fuse-2.9.2
./configure
make
make install
設定は この記事 を参考に。
s3fs をソースからインストール
cd /usr/local/src
wget https://s3fs.googlecode.com/files/s3fs-1.63.tar.gz
tar xzvf s3fs-1.63.tar.gz
cd s3fs-1.63
./configure
make
make install
s3fs の設定
設定ファイルを作成する。({}
は自身のキー文字列と置き換える)
echo {ACCESS_KEY}:{TOKEN_SECRET} > /etc/passwd-s3fs
chmod 0640 /etc/passwd-s3fs
S3 の指定バケットをマウントする
S3 の指定バケットを /mnt/s3
ディレクトリ以下にマウントします。
cd /mnt
mkdir s3
cd /mnt/s3
mkdir bucket1
modprobe fuse
s3fs {BUCKET_NAME} /mnt/s3/bucket1 -o allow_other,default_acl=public-read
念の為、ps aux | grep s3fs
で確認する。
読み込みテスト
バケット内にテキストファイルがあれば、普通に less
などで、中身を確認できます。
書き込みテスト
ファイルを作ってみる。
touch /mnt/s3/bucket1/hoge.txt
これで AWS Management Console から S3 に移動して、指定バケットを確認して、作成されていれば書き込み OK。
アンマウントする
mount
したら当然 umount
するときもくる。
しかし、s3fs には umount
はない。
ではどうするか……、プロセスを kill
のだ。
マウントした S3 バケットを全てアンマウントする場合は pkill s3fs
する。個別にアンマウントする場合は、プロセス ID で kill
する。
どのプロセスがどのマウントだっけー、というのは ps
コマンドで確認できる。
起動時の設定
この記事 を参考にすればできる。