追記
早速、リソースの補完を追加してみた。
tl;dl
SAWS is a very cool visual CLI for #AWS - http://t.co/P9NWuRwzUL pic.twitter.com/k2aPpAtCpl
— Jeff Barr (@jeffbarr) 2015, 9月 22
おおってことで試してみた。あくまでも試してみたレベルなので詳細は README やご自身でお試し下さいませ。m(__)m
超メモ
SAWS とは
Supercharged AWS CLI とのこと。従来の AWS CLI を Supercharged したものらしい。どの辺りが Supercharged なのか...以下、ドキュメントより抜粋。
- シンタックス、出力のハイライト
- 各種コマンド、サブコマンド、オプションを自動補完(全てのコマンドはまだ網羅されていない模様)
- S3 バケットと EC2 インスタンス ID とタグの自動補完
- コマンド、サブコマンドのショートカット機能(エイリアス機能)
- 外部コマンドの実行
- コマンド、サブコマンドのヘルプ機能
- その他、ツールバー、Windows サポート
ドキュメント が充実しているので Blog 記事書く必要も無さそう。
インストール
試した環境。
% sw_vers ProductName: Mac OS X ProductVersion: 10.11 BuildVersion: 15A278b
インストールは pip 一発。
% pip install saws
既に AWS CLI はインストール済みの環境で Credential の情報も設定済みの環境触っていく。
コマンド補完が嬉しい
インストールしたら saws
と入力して saws
プロンプトが表示される。
(※初回時にインスタンス ID とタグ、S3 Bucket 一覧を取得している)
早速、コマンドの補完を試してみる。
s と入力しただけで上記のコマンドのリストが展開される。
さらに s3api
のサブコマンドのリストも展開される。
さらにオプションの --ouput
までも展開される。
オプションの引数までも。
コマンド実行 done。
リソースの補完
現状では EC2 のタグ、ID と S3 バケットの一覧を補完することが出来るが、これは saws コマンド起動時、F5 キーで Refresh を実行した際にそれぞれの情報を取得してローカルにキャッシュされるとのこと。
尚、~/.sawsrc にてリソース毎に情報の取得について制御することが出来るとのこと。
# AWS resources to refresh refresh_instance_ids = True refresh_instance_tags = True refresh_bucket_names = True
キャッシュされている情報に関して、自分の環境では以下のパスに保存されていた。(boxen の名残が...)
/opt/boxen/homebrew/lib/python2.7/site-packages/saws/data/RESOURCES.txt
ファイルの中身は以下のようになっている。
$ cat /opt/boxen/homebrew/lib/python2.7/site-packages/saws/data/RESOURCES.txt [instance ids] i-aaaaaaaaa (snip) i-xxxxxxxxx [instance tag keys] xxxxxxxxxx [instance tag values] xxxxxxxxxx [bucket names] xxxxxxxxxx
サブコマンドのショートカット
サブコマンドのショートカット(エイリアス)を作成することが出来る。これは ~/.sawsrc ファイルの [shortcuts]
セクションに記述することで利用出来る。
'shortcut command' = 'full command'
書式は bash の alias を設定する際と似ている(と思う)。
例えば、以下のように記述する。
ec2 ls --instance-ids = ec2 describe-instances --instance-ids
実行してみる。
以下のように describe-instances
の結果が出力される。
おお、これは便利そう。
外部コマンドと一緒に利用する
以下のように外部コマンドの jq 等と一緒に利用することが出来るのも嬉しい。
また、saws プロンプト内で普通にコマンドを実行することも出来る。
コマンドヒストリ
saws で実行したコマンドのヒストリが ~/.saws-history に保存される。
$ cat ~/.saws-history (snip) # 2015-09-23 08:52:17.772064 +aws ec2 ls --instance-ids i-xxxxxxx # 2015-09-23 08:55:52.876525 +aws ec2 ls --instance-ids i-xxxxxxx | jq . # 2015-09-23 08:56:53.920203 +aws ec2 ls --instance-ids i-xxxxxxx| jq '.Reservations[].Instances[].InstanceId' # 2015-09-23 08:57:13.976060 +aws ec2 ls --instance-ids i-xxxxxxx | jq '.Reservations[].Instances[] | {InstanceId, InstanceType, PrivateIpAddress}'
ということで
ざくっと SAWS を触ってみたが、強力なコマンド、オプションの補完機能、EC2 と S3 のみに限定されているがリソース補完、確かに Supercharged だと思った。前述の通りドキュメントもしっかりと書かれており導入のハードルはとても低いのですぐに使い始められるのも嬉しい。リソース補完については Pull Request により随時追加されるようなので今後に期待!
以上。