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