Wasabiのバケットをgoofysを使用してマウントする

はじめに

クラウドストレージサービスとして、Wasabiを使用しているのだが、アクセスするのが大変なので、AWS CLIgoofys を使用してマウントしてみる。

環境

Windows 10 Professional
WSL2 (Ubuntu22.04 LTS)

Wasabiの設定

AccessKey, AccessSecretを取得する

  1. ログインをする。
  2. ログイン後に、メニューから「ユーザー」を選択する。
    create-access-key-1
  3. ページ上部の「ユーザーを作成」を選択する。
    create-access-key-2
  4. ユーザを作成 のポップアップが出てくるので、ユーザー名とあアクセスの種類「プログラム(APIキーを作成)」を選択し、次を押す。
    create-access-key-3
  5. 次を押す。
    create-access-key-4
  6. WasabiFullAccess を選択し、次を押す。
    create-access-key-5
  7. ユーザーを作成を押す。
    create-access-key-6
  8. アクセスキーが表示されるので、控えておく。
    create-access-key-7

CSVの場合は下記のようになっているので確認する。
create-access-key-8

これで、Access Key IdSecret Access Key を取得できた。

AWS CLIのセットアップ

AWS CLIのインストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
:~/work$ /usr/local/bin/aws --version
aws-cli/2.13.1 Python/3.11.4 Linux/5.15.90.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off

AWS CLIの設定

$ aws configure
AWS Access Key ID [None]: [Access Key Id]
AWS Secret Access Key [None]: [Secret Access Key]
Default region name [None]: ap-northeast-1
Default output format [None]: json

これでOK
動作確認をする。

$ aws s3 ls
aws s3 ls

An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.

エラーが出る。

エンドポイントURLをつけてみる。

$ aws s3 ls --endpoint-url=https://s3.ap-northeast-1.wasabisys.com
$ aws s3 ls --endpoint-url=https://s3.ap-northeast-1.wasabisys.com
2023-02-20 19:35:54 XXXXXXXXXXXX
2023-07-09 18:15:46 XXXXXXXXXXXX
2023-02-06 19:20:50 XXXXXXXXXXXX

取得できた。

goofysのセットアップ

goofysのインストール

バイナリを配置する。

sudo curl -L https://github.com/kahing/goofys/releases/latest/download/goofys -o /usr/local/bin/goofys
sudo chmod +x /usr/local/bin/goofys
goofys --version
goofys version 0.24.0-45b8d78375af1b24604439d2e60c567654bcdf88

goofysを利用してマウントする

  1. マウント用のディレクトリを作成する。
mkdir ~/mount-bucket-test
  1. blog.k-bushi.comというバケットをマウントする。
goofys blog.k-bushi.com ~/mount-bucket-test

エラーが出たので、 syslog を見てみる。

Jul 14 19:01:31 DESKTOP-M2SDB0M /usr/local/bin/goofys[10088]: main.ERROR Unable to access 'blog.k-bushi.com': bucket blog.k-bushi.com does not exist
Jul 14 19:01:31 DESKTOP-M2SDB0M /usr/local/bin/goofys[10088]: main.FATAL Mounting file system: Mount: initialization failed

おそらく、エンドポイントURLがついていないからと思われる。

コマンドを下記に変更

goofys --endpoint https://s3.ap-northeast-1.wasabisys.com blog.k-bushi.com ~/mount-bucket-test/
Jul 14 19:15:48 DESKTOP-M2SDB0M /usr/local/bin/goofys[11258]: s3.INFO anonymous bucket detected
Jul 14 19:15:48 DESKTOP-M2SDB0M /usr/local/bin/goofys[11258]: s3.INFO Switching from region 'us-east-1' to 'ap-northeast-1'
Jul 14 19:15:48 DESKTOP-M2SDB0M /usr/local/bin/goofys[11258]: s3.INFO Falling back to v2 signer
Jul 14 19:15:48 DESKTOP-M2SDB0M /usr/local/bin/goofys[11258]: main.ERROR Unable to access 'blog.k-bushi.com': permission denied
Jul 14 19:15:48 DESKTOP-M2SDB0M /usr/local/bin/goofys[11258]: main.FATAL Mounting file system: Mount: initialization failed

Permission denied がでているので、必要な権限がなさそうだったが足りているみたい。 別のバケットで試してみる。

goofys --endpoint https://s3.ap-northeast-1.wasabisys.com exam-result ~/mount-bucket-test/
ls ~/mount-bucket-test

:~$ ls ~/mount-bucket-test
AWS認定  FP  IPA

マウントできているのでOK!

アンマウント

umount [パス]

でOK。

umount ~/mount-bucket-test

エラー対応

vi ~/.aws/config

一番下に追加する。

[default]
region = ap-northeast-1
output = json
+endpoint_url=https://s3.ap-northeast-1.wasabisys.com
$ aws s3 ls

をして endpoint_url がついていなくても実行できることを確認する。

感想

結局、 blog.k-bushi.com というバケットがマウントできなかったのがよく分からなかった・・・。
アクセスできるDNS名だとだめ?
もしくは、何かおかしなファイルがあってマウントできなかった?
不明である。

参考

おわりに

Wasabi のストレージにしたが、アクセスが大変ということもあり活用できていなかった。
今回マウントをできるようにすることで、ローカルストレージとして扱えるようにし身近になった。
これで活用できるようにしたい…!

Hugo で構築されています。
テーマ StackJimmy によって設計されています。