S3 のファイルをあいまい検索で操作できる s3fzf という CLI ツールをつくった

2 min読了の目安(約1800字TECH技術記事

デモ

こんな感じ。
fzf 風にバケットの選択 -> ファイルの選択を行うことができます。

preview

インストール

$ go get -u github.com/kou-pg-0131/s3fzf

使い方

$ s3fzf --help
NAME:
   s3fzf - Fuzzy Finder for AWS S3.

USAGE:
   s3fzf <command> [options]

COMMANDS:
   cp  Copy S3 object to local.
   rm  Delete an S3 object.

GLOBAL OPTIONS:
   --help, -h  show help. (default: false)

cp

S3 のファイルをローカルに取得します。
デフォルトでは取得したファイルの内容は標準出力に出力されます。
ファイルとして出力したい場合は --output オプションに出力先を指定してください。
--bucket オプションにバケット名を指定することでバケットの選択をスキップできます。
--profile オプションで使用する AWS プロファイル名を指定できます。

$ s3fzf cp --help
NAME:
   s3fzf cp - Copy S3 object to local.

USAGE:
   s3fzf cp [options]

OPTIONS:
   --bucket value, -b value   name of the bucket containing the objects.
   --profile value, -p value  use a specific profile from your credential file.
   --output value, -o value   file path of the output destination. if not specified, output to stdout.
   --help, -h                 show help. (default: false)

rm

S3 のファイルを削除します。
デフォルトでは削除前に確認します。
確認をスキップしたい場合は --no-confirm オプションを指定します。
また、 cp コマンドと同様に --bucket, --profile オプションも使用できます。

NAME:
   s3fzf rm - Delete an S3 object.

USAGE:
   s3fzf rm [options]

OPTIONS:
   --bucket value, -b value   name of the bucket containing the objects.
   --profile value, -p value  use a specific profile from your credential file.
   --no-confirm               skip the confirmation before deleting. (default: false)
   --help, -h                 show help. (default: false)

実装について

fzf 風の挙動の実装には ktr0731/go-fuzzyfinder を使用しています。
ホットリロードやプレビュー機能等まで簡単に実装できる非常に便利なライブラリです。

GitHub