プロジェクト

全般

プロフィール

S3バケットのマウント

awsコマンドを使用せずにインスタンスからS3の読み書きを行うために
goofysを介してS3をディスクとしてマウントさせる方法がある。
s3fsというモジュールでも可能だが、非常に遅いためgoofysを使用する。

ただし、S3内でのデータの整合性が確立されるまでに時間がかかるらしく
頻繁に書き換えを行うような用途には利用できない。
(ロックファイルが認識されなかったり、更新中にさらに更新がかかった
時にファイル内のデータが破損したりする)

準備

  • マウントさせるEC2のIAMロールに次のポリシーを付与する。
    AmazonS3FullAccess
    
  • FUSEとgitをインストールする。
    yum install -y fuse git
    
  • Go 言語のインストール
    yum install -y go
    
    mkdir /usr/local/gocode
    mkdir /usr/local/gocode/{src,bin,pkg}
    
    echo export GOROOT=/usr/lib/golang >> ~/.bash_profile
    echo export GOPATH=/usr/local/gocode >> ~/.bash_profile
    echo export PATH=$PATH:$GOROOT/bin:$GOPATH/bin >> ~/.bash_profile
    
    source ~/.bash_profile
    

goofys のインストール

  • インストール
    go get github.com/kahing/goofys
    go install github.com/kahing/goofys
    
  • 手動でマウントする
    mkdir /mnt/s3
    /usr/local/gocode/bin/goofys <S3バケット名> /mnt/s3
    
  • マウントされたことを確認する
    df -h
    

自動起動設定

上記で問題がなければ/etc/fstabを編集し、起動時にマウントするように設定する。

#/usr/local/gocode/bin/goofys#バケット名 /mnt/s3 fuse _netdev,allow_other,--file-mode=0666,--uid=0,--gid=0 0 0