はじめてのAWS EC2インスタンス(Amazon Linux)にS3のバケットをgoofysでマウントする

AWS
Table of Contents

EC2でS3をマウントするにはs3fsがメジューみたいですが、s3fsが遅いという情報があり、今回goofysを使ってマウントすることにしました。

EC2インスタンスにS3のバケットをgoofysでマウントする

goとfuseのパッケージが必要となるためインストール

sudo yum install golang fuse

 

AWS CLIの設定

$ aws configure
AWS Access Key ID [None]: [S3 フルアクセスユーザのAccess key ID]
AWS Secret Access Key [None]: [S3 フルアクセスユーザのSecret access key]
Default region name [None]: ap-northeast-1
Default output format [None]: json

※アジアパシフィック (東京)のリージョン: ap-northeast-1

AWS サービスエンドポイント - AWS 一般的なリファレンス
AWS サービスのエンドポイントを検索します。

 

バケットの確認

aws s3 ls s3://[バケット名]

GOPATHを設定

export GOPATH=$HOME/go
echo $GOPATH /home/ec2-user/go

goofysのインストール

go get github.com/kahing/goofys go install github.com/kahing/goofys

マウントポイントの作成

sudo mkdir /mnt/bucket

/mnt/bucketへアクセス権限を付与(とりあえず全アクセス)

sudo chmod -R 777 /mnt/bucket/

 

マウント

./go/bin/goofys [バケット名] /mnt/bucket

注意:コマンドが帰ってきたら完了です。マウントに成功してもしなくても、何も戻ってこないので実際に確認してみます。

 

プロセス確認

$ ps auxf | grep goofys

ec2-user 31604 0.0 0.2 110472 2188 pts/0 S+ 22:11 0:00 \_ grep --color=auto goofys
ec2-user 30988 0.0 1.3 225460 14168 ? Ssl 17:21 0:00 /home/ec2-user/go/bin/goofys バケット名 /mnt/bucket

ボリューム確認

$ df -h

ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 488M 56K 488M 1% /dev
tmpfs 498M 0 498M 0% /dev/shm
/dev/xvda1 30G 1.6G 28G 6% /
バケット名  1.0P 0 1.0P 0% /mnt/bucket

自動マウント

手動でマウントするのは面倒なので、/etc/fstabにサーバー起動時にマウントされるように設定します。

 

rootユーザーでAWS CLIの設定

$ sudo aws configure
AWS Access Key ID [None]: [S3 フルアクセスユーザのAccess key ID]
AWS Secret Access Key [None]: [S3 フルアクセスユーザのSecret access key]
Default region name [None]: ap-northeast-1
Default output format [None]: json

 

fstabを修正

$ vim /etc/fstab

LABEL=/ / ext4 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/home/ec2-user/go/bin/goofys#[バケット名] /mnt/bucket fuse _netdev,allow_other,--dir-mode=0775,--file-mode=0666,--uid=500,--gid=500 0 0
※--dir-mode、--file-modeと--uid、--gidはファイルやディレクトリが作成された際のデフォルト権限/所有者の設定

インスタンスを再起動して確認してみる

$ reboot

マウント確認する

$ df -h
オプション | 説明
-----------+--------------------------------------------------------------------
_netdev    | ネットワークが有効になるまでマウントを待つためのオプション。
           | ネットワーク経由のデバイスを起動時にマウントさせたい場合などに指定する。
allow_other| 他のユーザーでも利用できるようにする。
--file-mode| マウントする際のファイル権限を設定する。
--uid      | マウントするユーザーIDを指定する。
--gid      | マウントするグループIDを指定する。

参考サイト

goofysを使ってAmazon LinuxにS3をマウントする。 - Qiita
はじめにAWSを利用していて、S3をサーバーマウントする技術としてs3fsが有名だと思います。ですが、s3fsは遅いと感じる人は少なくないかと思います。そこで他に何かないかなと思って調べたとこ…