end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

goofys と /etc/rc.d/rc.local による aws s3 の自動mount

install goofys

$ sudo yum install golang fuse git
$ sudo curl -L https://github.com/kahing/goofys/releases/latest/download/goofys -o /usr/local/bin/goofys
$ sudo chmod 775 /usr/local/bin/goofys
$ /usr/local/bin/goofys --version
goofys version 0.24.0-45b8d78375af1b24604439d2e60c567654bcdf88

認証キーの設定

$ mkdir ~/.aws
$ vi ~/.aws/credentials
[default]
aws_access_key_id = AKIA<ないしょ>X4BJN4
aws_secret_access_key = +nuKrtfPb<ないしょ>+cDSm/PPR
aws_default_region=ap-northeast-1

マウント用dirの作成と、手動マウント

以下を実行後、mount対象dir内にファイルをコピーするなど、 お試しください

$ mkdir /home/ec2-user/s3mount
$ /usr/local/bin/goofys 15db-s3.end0tknr.jp /home/ec2-user/s3mount

/etc/fstab での自動マウント エラー

https://github.com/kahing/goofys には、 /etc/fstab による自動マウント方法が記載されています。

私の場合、上記の手動マウントでは、成功するものの、 fstabでの自動マウントでは、以下のようなエラーとなりました。

$ sudo vi /etc/fstab
goofys#15db-s3.end0tknr.jp /home/ec2-user/s3mount fuse _netdev,allow_other,--file-mode=0666,--dir-mode=0777 0 0

$ sudo mount -a
2022/07/30 13:27:17.030997 main.FATAL Unable to mount file system, see syslog for details

$ sudo tail -f /var/log/messages
Jul 30 13:27:16 ip-172-31-29-20 /usr/local/bin/goofys[3346]: s3.INFO Switching from region 'us-east-1' to 'ap-northeast-1'
Jul 30 13:27:16 ip-172-31-29-20 /usr/local/bin/goofys[3346]: s3.ERROR code=NoCredentialProviders msg=no valid providers in chain. Deprecated.#012#011For verbose messaging see aws.Config.CredentialsChainVerboseErrors, err=<nil>
Jul 30 13:27:16 ip-172-31-29-20 /usr/local/bin/goofys[3346]: main.ERROR Unable to access '15db-s3.end0tknr.jp': NoCredentialProviders: no valid providers in chain. Deprecated.#012#011For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Jul 30 13:27:16 ip-172-31-29-20 /usr/local/bin/goofys[3346]: main.FATAL Mounting file system: Mount: initialization failed

/etc/rc.d/rc.local で自動マウント

そこで、/etc/fstab による自動マウントは諦め、 /etc/rc.d/rc.local から /usr/local/bin/goofys を実行することで、 自動マウントすることにしました。

$ sudo chmod 775 /etc/rc.d/rc.local

$ sudo vi /etc/rc.d/rc.local
su - ec2-user -c '/usr/local/bin/goofys 15db-s3.end0tknr.jp /home/ec2-user/s3mount'