はじめに
re:Inventでアナウンスされていたaws-shellプロジェクトがavailableになりました。
ハンズオンしてみたところ、かなりいい感じだったのでまとめました。
aws-shellとは?
githubのリポジトリには、The interactive productivity booster for the AWS CLI
とあります。
aws-cliの為の、生産性を向上させるようなインタラクティブなツールという位置づけです。
また、リポジトリを見る限りDeveloper Preview
のステータスなので、その点は注意が必要です。
さっそく
リポジトリはこちらです
https://github.com/awslabs/aws-shell
利用したバージョンは、0.0.1です。
インストール
pipで簡単にインストールできます。
パスが通っているので、ちゃんとインストールできているようです。
$ sudo pip install aws-shell
Password:
Downloading/unpacking aws-shell
Downloading aws-shell-0.0.1.tar.gz (45kB): 45kB downloaded
Running setup.py (path:/private/tmp/pip_build_root/aws-shell/setup.py) egg_info for package aws-shell
(略)
$ type aws-shell
aws-shell is /usr/local/bin/aws-shell
エラーになる
早速実行してみたら、なんかエラーでた。
$ aws-shell
Traceback (most recent call last):
File "/usr/local/bin/aws-shell", line 5, in <module>
from pkg_resources import load_entry_point
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2797, in <module>
parse_requirements(__requires__), Environment()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 580, in resolve
raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (botocore 1.3.13 (/Library/Python/2.7/site-packages), Requirement.parse('botocore==1.2.8'))
そんな時は、aws-cliを最新版にします。
$ sudo pip install --upgrade awscli
こんどはうまく動きました。プロンプトがでればOKです。
$ aws-shell
aws>
設定する
Access Key ID と Secret Access Keyを設定します。
すでにaws-cliの設定がしてあり$HOME/.aws/credentials
がある場合は、defaultの設定を読み込むようです。
aws> configure
AWS Access Key ID [****************DKNA]:
AWS Secret Access Key [****************TnQa]:
Default region name [ap-northeast-1]:
Default output format [json]:
どんな機能があるの?
自動補完
cliにもある自動補完ですが、より強化されています。
Tabキーでポップアップの項目を選択することができ、Shift + Tabキーで戻ることも可能です。
また、コマンドが確定するとそのコマンドのヘルプが画面下部に表示されます。ハイフンを入力すれば、オプションも補完されますし、インラインでヘルプを表示してくれます。
さらに、オプションでは入力例まで表示してくれます。まじ便利すぎる。
Server Side Auto Completion
補完はさらに進化して、インスタンス名の補完までやってくれます!すごい。
Fuzzy Search
コマンド名は一部で検索することもできます。普通にコマンドの一部分だけでなく、頭文字を取った検索や、先頭数文字づつを取った検索などにも対応しています!
ddo
で検索するとdescribe-dhcp-options
やdelete-dhcp-options
の頭文字を取って検索した結果が返ってきます。
desins
でdescribe-instances
などが検索できる例です。
キーバインディング
画面下部に表示されているツールバーオプションから、F3キーでEmacsとViをToggleで切り替えることができます。
自分はViに設定しました。
コマンド実行も可能
!
を先頭につけることで任意のコマンドを実行させることもできます。
aws> !date
2015年 12月16日 水曜日 11時43分36秒 JST
その他
他にも、コマンドのヒストリーが見れたり、画面下部のツールバーからaws-shellの挙動について設定変更ができたりします。また、.edit
というコマンドを利用することで、セッション中のヒストリーからShell Scriptを作成することもできます。
あと、aws-shellから抜ける場合はF10
でもいいですが、Ctrl + D
のほうが個人的にはしっくりきました。
まとめ
補完系を大きく進化させて、冗長なコマンドもヘルプを行ったり来たりせずにいろいろできるようになりそうです。使い方によっては3倍以上の作業効率アップも狙えると思います。
現時点の欠点としては、複数のアカウントを切り替えらないことなどがありますが、こちらはIssueが立てられていますので、そのうち改善されると思います。
terminalで作業する時間が長ければ長いほど、aws-shellから受ける恩恵が大きそうです。