S3をマウントする方法は2種類(s3fs,goofys)ありますが、そのうちのs3fsでのマウントを記録します。
goofysでマウントが気になる方はこちら(IAM設定あり)にあります。
#IAMの設定とバケットの作成
##IAMの設定
冒頭にあるgoofysのリンクのIAMの設定を見てください。
1,ユーザー作成
2,ポリシー作成
3,ユーザーにポリシーをアタッチする
をやるだけでいいです。
##バケットの作成
S3のサービスを開いてバケットの作成。適当にリージョンと名前を決め作成する。
#s3fsでマウント
・rootユーザーで基本作業します
sudo su
cd
##s3fsのインストール
yum -y install git automake gcc-c++ fuse fuse-devel libcurl-devel libxml2-devel openssl-devel
wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.78.tar.gz
tar xzvf v1.78.tar.gz
rm -f v1.78.tar.gz
cd s3fs-fuse-1.78/
./autogen.sh
./configure prefix=/usr
make
make install
##IAMで作成したユーザーをs3fsに登録
vi /etc/passwd-s3fs
バケット名:アクセスキー:シークレットキー
・権限変更
chmod 640 /etc/passwd-s3fs
##s3fsでマウント手順
cd ~
touch s3fs-mount.sh
chmod u+x s3fs-mount.sh
vi s3fs-mount.sh
マウントポイントは自分で適当な場所にmkdir
で作成してください。
#!/bin/bash
s3fs [バケット名] [マウントポイントのディレクトリ] -o allow_other,use_cache=/tmp,uid=[UID],gid=[GID],passwd_file=/etc/passwd-s3fs
#!/bin/bash
s3fs example-s3buket /home/ec2-user/s3-mountpoint -o allow_other,use_cache=/tmp,uid=500,gid=500,passwd_file=/etc/passwd-s3fs
・実行
./s3fs-mount.sh
・確認
df -h
実行結果にs3fsと自分がマウントしたディレクトリ名が出てくれば成功
以上終わりです。
#自動起動とアンマウントのやり方
##自動起動
vi /etc/fstab
fstabに以下を追記する
s3fs#[バケット名] [マウントするディレクトリ] fuse allow_other,use_cache=/tmp,uid=[UID],gid=[GID],passwd_file=/etc/passwd-s3fs 0 0
s3fs#example-s3buket /home/ec2-user/s3-mountpoint fuse allow_other,use_cache=/tmp,uid=500,gid=500,passwd_file=/etc/passwd-s3fs 0 0
##アンマウント方法
以下のコマンドを使用
fusermount -u [マウントしたディレクトリ]
(umount
だとエラー出てくる。fuser -k [マウントしたディレクトリ]
で対処できますが…)
#感想
goofysとs3fsと両方いじったのですが、早いのはgoofysのほうが明らかに早い。
s3fsはviなどcatやlsに少し時間がかかる。
S3をもとにftpサーバーを作るのにvsftpdとgoofysの相性がよくないと聞いたので仕方なくs3fsを使用しています。
s3fsでは初めてマウントしたときにもともとS3のなかにあったものはすべてのパーミッションが000になります。
ですが、chmodでおのおのパーミッションの設定ができるのがいいと思います。
goofysではchmodで変更できないです。マウント時にパーミッションの設定をしますので、すべて統一のパーミッションになります。
#参考サイト
http://qiita.com/hmitr/items/155f25e50e4dcb287979
http://qiita.com/wanghm/items/1561b0f2a9a90fba716f
http://qiita.com/daigo2010/items/636d0b4217faf197eb52
https://curecode.jp/tech/install-s3fs-1-78-on-amazon-linux/
http://dev.classmethod.jp/cloud/aws/s3fs-ec2-mount-s3/