LightsailインスタンスにS3バケットをマウント
背景
調べりゃ大抵同じようなことをEC2でやってる記事は見かけるが、
LightsailのOSはDebian系なこと、情報が古くて使い物にならないものが多いこと、
途中でエラーになりまくってその解決方法がネットのあっちこっちに散らばってることからこの記事を作成した。
前提
環境
- Amazon Lightsail (Debian 4.19)
- go version go1.16 linux/amd64
- goofys version 0.24.0
準備
- ブロックパブリックアクセスオンのS3バケットを作成
- Lightsailインスタンス設定用のIAMユーザーAccessKey, SecretAccessKey
対象S3バケットのReadとWrite許可IAMポリシーが必要(面倒であればFullAccess) aws configure
コマンドで上記設定
注意
- Lightsailコンソールから「SSHを使用して接続」でSSH接続して作業。
- rootユーザーを使用。
理由はgoofysが裏で使用しているfuse(fusermount)がrootで行われるためroot以外でやると色々めんどくせえから。
それでもやりたければご自由に。 - 過去やった手順を振り返り修正しながら書いてるんで間違ってるか所があるかも。
取り急ぎ忘れないようにまとめたものであるため時間あるときに再確認し修正点あれば修正予定。
手順
1. go 1.16のインストール
sudo su
cd /root
curl -L "https://golang.org/dl/go1.16.linux-amd64.tar.gz" -O
tar go1.16.linux-amd64.tar.gz
export GOPATH=/root/go # GOPATH設定
export GOROOT=/root/go # GOROOT設定
export PATH=$PATH:$GOPATH/bin # pathに追加
go version
で以下の出力が出ればOK
go version go1.16 linux/amd64
2. goofys 0.24のインストール
ここらへん意味不明。参考リンク参照。
mkdir -p go/src/github.com/kahing
cd go/src/github.com/kahing/
git clone https://github.com/kahing/goofys.git
export GOOFYS_HOME=/root/go/src/github.com/kahing/goofys/
cd /root/go/src/github.com
go get github.com/Azure/azure-pipeline-go
cd /root/go/src/github.com/kahing/goofys
git submodule init
git submodule update
go install /root/go/src/github.com/kahing/goofys/
goofys --version
で以下のバージョン出力が出ればOK
goofys version 0.24.0-use `make build' to fill version hash correctly
3. S3バケットのマウント
yum install fuse git -y
- fuse.confの8行目コメントアウトを解除
vi /etc/fuse.conf
# user_allow_other
->user_allow_other
- fstabの末尾にマウント設定を追加
vi /etc/fstab
/root/go/bin/goofys#S3_BUCKET_NAME /PATH/TO/YOUR/DIRECTORY fuse _netdev,allow_other,--dir-mode=0777,--file-mode=0777,--uid=UID,--gid=GID 0 0
「S3_BUCKET_NAME」「/PATH/TO/YOUR/DIRECTORY」「UID」「GID」を各自環境の値で置換
UID, GIDはマウント先のディレクトリを操作させたいユーザーのUserIDとGroupIDを設定する。
ls -alやidコマンドで所有権、IDを確認し設定。マウント先ディレクトリの所有権と同じにする。 mount -a
df -h
でs3のホスト名が表示されていればOK。適宜ファイル書き込みや読み込み操作をサーバ上で行って確認。
以上
Share