もっと早いやつが出たので新しいのを書きました。参考にどうぞ。[20160129追記]
[AWSで]今流行のgoofysでS3を爆速マウント[EC2]
s3fsを使用してEC2インスタンスにS3バケットをマウントします。
だけど、アクセスキー情報をインスタンスに置いておきたくない!
・・・という状況を想定してIAM Roleを使用しました。
##IAM Role
IAMユーザーは使ったことありましたがRoleは初でした。
ハマるかと思いましたがそんなでもなかったです。
新しいRoleを作ります。
名前は『use-s3』としました
##EC2インスタンスを立ち上げる
通常と変わりませんがこの時、先ほど作成したRoleを指定することを忘れないように注意しましょう。
##S3バケットの準備
『uses3』という名前で作成してみました。
ここまでは割と一瞬で終わったのですが、この後割とはまりました。
参考にした情報は最後に載せますが・・・
バージョンの違いですかね。なかなかマウントできずに疲れました。
##s3fsの導入
ssh接続を行い以下のコマンドを入力
$ sudo yum -y update
$ sudo yum -y install automake
$ sudo yum -y install gcc-c++
$ sudo yum -y install fuse
$ sudo yum -y install fuse-devel
$ sudo yum -y install libcurl-devel
$ sudo yum -y install libxml2-devel
$ sudo yum -y install openssl-devel
これでインストールに必要なものを賄います。
続けてs3fsのダウンロードして解答
$ tar -xzf v1.77.tar.gz
###s3fs-fuse-1.77
というディレクトリが作成されるのでその中へ。
$ cd s3fs-fuse-1.77
いろいろなサイトで『configure』をと書かれていたのですがそんなものがなく困っていましたが、どうやら『autogen.sh』を実行して作るようでした。
$ ./autogen.sh
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
無事インストールされました。
マウントポイント作成
$ sudo mkdir /mnt/s3
マウントします
パーミッションを変更しましょう。
$ sudo chmod 777 /mnt/s3
とりあえず検証なので全開け。
インストール時のデフォルトだとRootユーザーしか使えないので以下のファイルを修正
$ sudo vi /etc/fuse.conf
ファイル内は下記のようになっているので2行目の#を外してrootユーザー以外が利用できるようにする。
[] # mount_max = 1000
[] # user_allow_other
ここが面倒でした
####$ /usr/local/bin/s3fs <今作った/mnt/s3> -o rw,allow_other,,,default_acl=public-read,iam_role=""
uid,gidを使うので調べます。
$ id ec2-user
今回の構成だとこんな感じ
$ /usr/local/bin/s3fs uses3 /mnt/s3 -o rw,allow_other,uid=500,gid=500,default_acl=public-read,iam_role="use-s3"
最後に確認
$ df -h
マウントされていれば成功です
IAM Userを使う方法はまた今度投稿します。
##参考
http://haws.haw.co.jp/tech/iam_role%EF%BD%93_for_amazon_ec2_and_s3fs/
http://dev.classmethod.jp/cloud/aws/s3fs-ec2-mount-s3/
http://qiita.com/monry/items/fa3bebd69e04a08ae12f
http://hivecolor.com/id/49