2011年8月16日火曜日

Amazon EC2 (Amazon Linux) で S3 をマウントして使用する(s3fs+FUSE)

アプリケーションで大容量のファイルを扱う必要がある場合にS3をマウントして使用するための設定です。S3をファイルシステムとしてマウントするにはs3fsとs3fsが使用しているFUSE(Filesystem in Userspace)が必要になります。

使用したインスタンスのイメージですが、『Basic 32-bit Amazon Linux AMI 2011.02.1 Beta (AMI Id: ami-300ca731)』を使用しました。

[2013.01.16追記]
Amazonの堀内さんとEC2からのS3の利用について少し話をさせてもらったところ、s3fsなどは使わずにAPIを利用することをお勧めされてました。アップロードしたファイルをAPIでS3に保存して、そのAPIから返ってきたS3のURLをDBに保存していくのがベストだということです。(記事:AWS SDK2 for PHPを使ってS3にファイルをアップロードする



管理者になる
インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -

ライブラリのインストール

FUSE に 必要なライブラリをインストールします。既にインストール済みのものがあれば除いてください。
#yum -y install gcc-c++
#yum -y install make
#yum -y install openssl-devel
#yum -y install curl-devel
#yum -y install libxml2-devel

FUSE のインストール

FUSE はバージョン2.8.5をソースからコンパイルしてインストールします。
#cd /usr/local/src
#wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz
#tar xzvf fuse-2.8.5.tar.gz
#cd fuse-2.8.5
#./configure
#make
#make install

FUSEの設定

インストールしたFUSEの関連モジュールを読み込むための設定をします。
#echo /usr/local/lib >> /etc/ld.so.conf
#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
#ldconfig

s3fsのインストール

s3fsをインストールします。いろいろバージョンがありますが、この記事を書いている時点では、s3fs-r203.tar.gzでないとうまくいきませんでした。
#cd /usr/local/src
#wget http://s3fs.googlecode.com/files/s3fs-r203.tar.gz
#tar xzvf s3fs-r203.tar.gz
#cd s3fs
#make
#make install

s3fsの設定

設定ファイルを作成します。AWSへのアクセスキーとセキュリティキーをコロンで区切って記述して保存します。
#vi /etc/passwd-s3fs
accesskey:securetkey

S3をマウントする

今回はS3のs3-bucket-nameとバケットを/s3ディレクトリにマウントします。
#cd /
#mkdir s3
#modprobe fuse
#s3fs s3-bucket-name /s3 -o allow_other,default_acl=public-read

次回起動時のためにfstabにも記載しておきます。
#vi /etc/fstab
/usr/bin/s3fs s3-bucket-name /s3 fuse allow_other,default_acl=public-read 0 0

Related Posts Plugin for WordPress, Blogger...