最近AWS CLIを使い始めました。
コマンドに不慣れなため自動補完的なsomethingが欲しいと思い調べたところ、AWS CLIにはCommand completionとauto-promptがあることが分かりました。
というわけで、設定をしていきます。
自分の環境
$ echo $SHELL /opt/homebrew/bin/zsh
$ aws --version aws-cli/2.15.0 Python/3.11.6 Darwin/23.1.0 source/arm64 prompt/off
ここの prompt/off はauto-promptとは関係がないっぽい。
Command completion
いわゆるコマンドの自動補完です。
コマンド入力時にタブキーを押下すると入力内容が自動的に補完されます。
利用するためにはシェルのprofileに設定を追加する必要があります。
Zshの場合は .zshrcに設定を追加します。
~/.zshrc
autoload bashcompinit && bashcompinit autoload -Uz compinit && compinit complete -C '/opt/homebrew/bin/aws_completer' aws
completeにはaws_completerのpathを設定する必要があります。
Homebrewでawscliをインストールしている場合、aws_completerも同時にインストールされており、そのpathは /opt/homebrew/bin/aws_completer
となっています。
Bashの場合は、compinit周りの設定が不要なため.bashrcに下記の設定のみを追加します(たぶん)
complete -C '/opt/homebrew/bin/aws_completer' aws
aws
(awsの後ろにスペース)の状態でタブキーを押すと次の入力が補完されます。
コマンドだけではなくサブコマンドやオプションの内容も補完されます。
(aws-cliってこんなにサブコマンドの種類があるのか。。。)
auto-prompt
コマンド入力時に対話式のプロンプトを用いてコマンドとそのオプションを理解しながら入力できる機能です。
利用するためには、CLI実行にオプションで設定する、環境変数に設定する、設定ファイルに設定するの3択がありますが、ここでは設定ファイルに設定を追加します。
~/.aws/configに設定を追加します。
~/.aws/config
[default] cli_auto_prompt = on
aws
だけ入力してコマンドを実行すると、下記のようなpromptが表示されます。
(ドキュメントや出力パネルもあってリッチや。。。)
また、 cli_auto_prompt
は on
以外にも on-partial
の設定もあります。
[default] cli_auto_prompt = on-partial
違いは、
on
: full auto-promptモード。aws
コマンド実行時に常時auto-promptを利用するモードon-partial
: partial auto-prompモード。aws
コマンドが不完全な場合(サブコマンド等などで)にauto-promptを利用するモード
cli_auto_prompt = on-partial
の方はコマンドが完全な場合はそのまま実行されるため、通常に利用する分はこちらの方が便利かもしれません。
auto-promptに頼りたい場合はコマンドがあやふやな場合であると思うため。
/
auto-promptの方はやりすぎな気もしますが、AWS CLIの理解を深めるためにしばらく使ってみようかと思います。