LightsailインスタンスにS3バケットをマウント

カテゴリ : Lightsail
公開日 : 2021/06/19 更新日 : 2021/07/07

背景

調べりゃ大抵同じようなことをEC2でやってる記事は見かけるが、
LightsailのOSはDebian系なこと、情報が古くて使い物にならないものが多いこと、
途中でエラーになりまくってその解決方法がネットのあっちこっちに散らばってることからこの記事を作成した。

前提

環境

  1. Amazon Lightsail (Debian 4.19)
  2. go version go1.16 linux/amd64
  3. goofys version 0.24.0

準備

  • ブロックパブリックアクセスオンのS3バケットを作成
  • Lightsailインスタンス設定用のIAMユーザーAccessKey, SecretAccessKey
    対象S3バケットのReadとWrite許可IAMポリシーが必要(面倒であればFullAccess)
  • aws configureコマンドで上記設定

注意

  1. Lightsailコンソールから「SSHを使用して接続」でSSH接続して作業。
  2. rootユーザーを使用。
    理由はgoofysが裏で使用しているfuse(fusermount)がrootで行われるためroot以外でやると色々めんどくせえから。
    それでもやりたければご自由に。
  3. 過去やった手順を振り返り修正しながら書いてるんで間違ってるか所があるかも。
    取り急ぎ忘れないようにまとめたものであるため時間あるときに再確認し修正点あれば修正予定。

手順

1. go 1.16のインストール

  1. sudo su
  2. cd /root
  3. curl -L "https://golang.org/dl/go1.16.linux-amd64.tar.gz" -O
  4. tar go1.16.linux-amd64.tar.gz
  5. export GOPATH=/root/go # GOPATH設定
  6. export GOROOT=/root/go # GOROOT設定
  7. export PATH=$PATH:$GOPATH/bin # pathに追加
  8. go versionで以下の出力が出ればOK
    go version go1.16 linux/amd64

2. goofys 0.24のインストール

ここらへん意味不明。参考リンク参照。

  1. mkdir -p go/src/github.com/kahing
  2. cd go/src/github.com/kahing/
  3. git clone https://github.com/kahing/goofys.git
  4. export GOOFYS_HOME=/root/go/src/github.com/kahing/goofys/
  5. cd /root/go/src/github.com
  6. go get github.com/Azure/azure-pipeline-go
  7. cd /root/go/src/github.com/kahing/goofys
  8. git submodule init
  9. git submodule update
  10. go install /root/go/src/github.com/kahing/goofys/
  11. goofys --versionで以下のバージョン出力が出ればOK
    goofys version 0.24.0-use `make build' to fill version hash correctly

3. S3バケットのマウント

  1. yum install fuse git -y
  2. fuse.confの8行目コメントアウトを解除 vi /etc/fuse.conf # user_allow_other -> user_allow_other
  3. 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を確認し設定。マウント先ディレクトリの所有権と同じにする。
  4. mount -a
  5. df -hでs3のホスト名が表示されていればOK。適宜ファイル書き込みや読み込み操作をサーバ上で行って確認。

以上

Share

Blogger : rice

Twitter GitHub

SAP
DOP