しふみんのブログ

しふみんのブログです。

AWS CLIのCommand completionとauto-promptを有効にする

最近AWS CLIを使い始めました。
コマンドに不慣れなため自動補完的なsomethingが欲しいと思い調べたところ、AWS CLIにはCommand completionとauto-promptがあることが分かりました。
というわけで、設定をしていきます。

自分の環境

  • シェルはZsh
  • Homebrewでawscliをインストール
$ 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

docs.aws.amazon.com

いわゆるコマンドの自動補完です。
コマンド入力時にタブキーを押下すると入力内容が自動的に補完されます。
利用するためにはシェルの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ってこんなにサブコマンドの種類があるのか。。。)

Image from Gyazo

auto-prompt

docs.aws.amazon.com

コマンド入力時に対話式のプロンプトを用いてコマンドとそのオプションを理解しながら入力できる機能です。
利用するためには、CLI実行にオプションで設定する、環境変数に設定する、設定ファイルに設定するの3択がありますが、ここでは設定ファイルに設定を追加します。
~/.aws/configに設定を追加します。

~/.aws/config

[default]
cli_auto_prompt = on

aws だけ入力してコマンドを実行すると、下記のようなpromptが表示されます。
(ドキュメントや出力パネルもあってリッチや。。。)

Image from Gyazo

また、 cli_auto_prompton 以外にも on-partial の設定もあります。

[default]
cli_auto_prompt = on-partial

違いは、

  • on : full auto-promptモード。 aws コマンド実行時に常時auto-promptを利用するモード
  • on-partial : partial auto-prompモード。 aws コマンドが不完全な場合(サブコマンド等などで)にauto-promptを利用するモード

docs.aws.amazon.com

cli_auto_prompt = on-partial の方はコマンドが完全な場合はそのまま実行されるため、通常に利用する分はこちらの方が便利かもしれません。
auto-promptに頼りたい場合はコマンドがあやふやな場合であると思うため。

/

auto-promptの方はやりすぎな気もしますが、AWS CLIの理解を深めるためにしばらく使ってみようかと思います。

参考