2015年8月25日火曜日

ec2にs3のバケットをマウントして使ってみる的なお話

  • このエントリーをはてなブックマークに追加

webアプリケーションを作っているときに、
大体はec2+s3みたいな感じでメディアファイルをs3に逃がし、
さらにec2は負荷分散ということでロードバランサーを使うという大体定番なセットを使う事が多い。

けどそんなwebアプリでは大体画像をアップするとかがあったりする。
その場合はs3に画像をアップするにはアプリからs3にpostするプログラム(fuelphpを使ってs3にファイルをアップする記事はこちら)を作らないといけないが、
環境によっては面倒だし、PHPだとAWS SDKを使わないといけないけど面倒だったりもする。
というか画像加工をするには一旦手元というかec2上に置いて、ごにょごにょしないといけなかったり。

そんな面倒なことを簡単にするためにもec2上にs3をマウントすれば解決出来るので、今日はそのお話をば。

■s3fsをインストールして設定

# cd /usr/local/src
# wget https://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
# tar zxfv s3fs-1.74.tar.gz
# cd s3fs-1.74
# yum install libcurl-devel
# yum install libxml2-devel
# yum install fuse fuse-devel
# yum install openssl-devel
# ./configure prefix=/usr
# make 
# make install

# echo 'Access Key ID:Secret Access Key' > /etc/passwd-s3fs
# chmod 600 /etc/passwd-s3fs


■バケットをマウントする

# mkdir /mnt/hogebucket
# s3fs hogebucket /mnt/hogebucket -o rw,allow_other,uid=uid,gid=gid,default_acl=public-read
apacheなりの実行ユーザー・グループに設定しておかないと、permission deniedが出てしまうので要注意。


■バケットをアンマウントする

# hogebucket -uz /mnt/hogebucket


■OS起動時に自動的にマウントするようにする

# vi /etc/rc.d/rc.local
###一番下の行に追加
fusermount -uz /mnt/hogebucket
s3fs hogebucket /mnt/hogebucket -o rw,allow_other,uid=uid,gid=gid,default_acl=public-read


ってな感じ。
これでマウント出来るので、PHPなりどこからなりローカルファイルとしてs3のファイルを扱う事が出来る。
なのでわざわざローカル上にs3のファイルをダウンロードしてそこからごにょごにょして、
使い終わったら削除するというなんか面倒な方法とかを使わないで済む的な。

Adsense