AWS LocalStack(S3)操作を簡単にするツール作った
go-filesystem: AWS LocalStack操作をシンプルにするツール
今回は、私が開発したGoでlocalstack(S3)を簡単に操作するツール「go-filesystem」を作ったので紹介する。
このツールを使えば、ローカルで立ち上げたLocalStackの操作を、AWS CLIを用いずにLinuxのコマンド(例: ls
やtouch
)を使って簡単に行うことができる。
どういった事ができるのか
非常にシンプルで、ただこれだけ。
localstack(S3)操作を、AWS CLI固有のコマンドを利用せずに使い慣れたlinuxコマンドで行える。
以下のようなaws cliコマンドをいちいち打つ必要はなくて
❌
aws --endpoint-url=http://localhost:4566 s3 ls s3://my-bucket/my-directory/
以下のような使い慣れているlinuxコマンドを利用することでファイル一覧できる
⭕️
ls -l
touch hoge.txt
rm hoge.txt
rm -r hoge/
モチベーション
- 業務とプライベートでlocalstack(S3)をよく使うのだが、使うたびにCLIコマンドの使い方を調べていたのがめんどくさくなった
- linuxコマンドなら、染み付いているので脳死で操作できて楽ちんではないか?
go-filesystemの仕組み
百聞一見にしかずということで
- 黄色の箇所が今回Goで作ったツール
- 赤色のFUSEがこのgo-filesystemを利用するにあたって必須のソフトウェア
- なのでFUSEがインストールできない端末ではgo-filesystemは利用できない...
ざっくりいうとFUSEというfilesystemがsystemcallをgo-filesystemにプロキシしてくれるので、そのリクエストを受け取って適当なコマンドをlocalstackに送りつけている。
インストール
ここから先は、インストール方法などを書いていますが以下リンク先のREADMEにより細かい方法が書いているのでそっちを参照してほしい。
1. FUSEのインストール
2. バイナリのインストール
最新バージョンを見つけてインストール
go install github.com/kinshotomoya/go-filesystem/go-filesystem@latest
3. ディレクトリをマウント
※ localstackを立ち上げておく必要ある
go-filesystem -mountdir {mountDir} -provider aws -env local -bucket {bucketName}
Example:
go-filesystem -mountdir /tmp/myown-filesystem -provider aws -env local -bucket my-bucket
4. ファイルシステムの使用
通常通りにナビゲートして使用
cd /tmp/myown-filesystem
ls -lh
Example:
cd /tmp/myown-filesystem
[]:/tmp/myown-filesystem/ ls -lh
total 32
-rwxrwxrwx 0 root wheel 86B 5 14 08:07 child1.txt
drwxrwxrwx 0 root wheel 22B 5 14 08:07 child2
drwxrwxrwx 0 root wheel 11B 5 14 08:07 child3
-rwxrwxrwx 0 root wheel 219B 5 14 08:07 insert-test-data.sh
おわりに
go-filesystemは、LocalStack上のファイル操作を簡単にするためのツール。
Linuxのコマンドに似た操作感で、AWS CLIの煩雑さから解放されるので、ぜひプロジェクトで活用してみてほしい。
localstackだけではなくて、指定したAWS S3を扱ったり、他のlinuxコマンドを使えるようにしたりなどまだまだ拡張したいので興味ある方はぜひPR等お願いしたい。
また以下の本が非常に参考になったので紹介しておく。
Discussion