Amazon EC2にS3をマウントする(goofys編)

    制作部の里山です。

    Amazon EC2にS3をマウントして、ストレージ領域として使う機会があったので、
    goofysを利用する形で試してみました。

    従来ですとf3fsを使うのが主流でしたがスピード的な問題があり、
    それに代わる手法として台頭してきたのがgoofysのようです。
    Go言語で書かれているというのも、時代を先取りしている感があります。

    参考:https://github.com/kahing/goofys

    各所で色々と紹介されていますが、
    あまり難しい知識なくできる方法としては以下のような感じかと思います。
    (セオリーではないかもしれないのでご注意を)

    1. S3にフルアクセス権限を持ったIAMロール作成しておく
     新しいロールの作成
      ↓
     任意のロール名を設定
      ↓
     ロールタイプでAmazon EC2を選択
      ↓
     ポリシーのアタッチでAmazon S3 FullAccessを選択

    2. goofysの設定

    [ec2-user@ip-999-999-999-999 ~]$ sudo yum install golang fuse -y
    [ec2-user@ip-999-999-999-999 ~]$ export GOPATH=$HOME/go
    [ec2-user@ip-999-999-999-999 ~]$ go get github.com/kahing/goofys
    [ec2-user@ip-999-999-999-999 ~]$ go install github.com/kahing/goofys
    

    3. マウント設定

    [ec2-user@ip-999-999-999-999 ~]$ $GOPATH/bin/goofys S3-Backet-Name /var/www/html/upload
    

    4. ログイン時にマウントを適用する設定(何もしないとマウントが外れる為)

    [ec2-user@ip-999-999-999-999 ~]$ vi /home/ec2-user/.bash_profile
    
     ↓↓↓追記↓↓↓
    
    export GOPATH=$HOME/go
    $GOPATH/bin/goofys S3-Backet-Name /var/www/html/upload
    

    と、ここまでやってみましたが一つ問題があり、
    Apacheユーザーからマウント先に書き込みできないことがわかりました。
    なので、ファイルアップロードを行うようなサイトだと使えません。

    どれが正攻法なのかわかりませんでしたが、Apacheユーザーを指定してマウントすることで、
    書き込みができるようになりました。(ただし、逆にec2-userから書き込めなくなるので正解ではない気が‥)

    5.設定変更

    [ec2-user@ip-999-999-999-999 ~]$ vi /home/ec2-user/.bash_profile
    export GOPATH=$HOME/go
    $GOPATH/bin/goofys S3-Backet-Name /var/www/html/upload ←この設定はNG
    sudo $GOPATH/bin/goofys S3-Backet-Name /var/www/html/upload -o allow_other,--uid=48,--gid=48 ←この設定に変更(Apacheユーザーのuidとgidを指定)
    

    こんな感じで、EC2にS3のマウントをしました。

    では。