PowerShellからAWSのリソースを操作するために、AWS Tools for PowerShellモジュールが提供されていますが。
上記モジュールを利用せずに、aws-cli v2を利用することも多いかと思います。
本記事は、PowerShellコンソールからaws-cli v2を利用する際にいい感じに利用する方法の紹介となります。
aws_completer.exeで入力補完をする
Windows環境にaws-cli v2をインストールすると、入力補完を提供するaws_completer.exeがインストールされます。
試しに、aws_completer.exeでaws ec2 describeの入力補完の提案を確認してみます。
# 環境変数 COMP_LINE、COMP_POINT を入力してから aws_completer.exe を実行すると入力補完の一覧を取得できる
$Env:COMP_LINE = "aws ec2 describe"
$Env:COMP_POINT = 17
aws_completer.exe
上記、画像ように入力補完の一覧が取得できます。
AWSドキュメントに記載もある通り、aws-cli v2ではPowerShellで入力補完を提供するRegister-ArgumentCompleterコマンドレットとaws_completer.exeを組み合わせる事によりPowerShell上で入力補完を使うことができるようになります。
この設定方法については下記ドキュメントがありますので、こちらに記載されている通り。
PowerShellの起動プロファイルに設定を追加すると、PowerShellコンソール上でaws-cliの入力補完が使えるようになります。
Register-ArgumentCompleter -Native -CommandName aws -ScriptBlock {
param($commandName, $wordToComplete, $cursorPosition)
$env:COMP_LINE=$wordToComplete
$env:COMP_POINT=$cursorPosition
aws_completer.exe | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
Remove-Item Env:\COMP_LINE
Remove-Item Env:\COMP_POINT
}
aws s3とまで入力してCTRL-SPACEを入力すると画像の用にコマンド入力の補完を確認できるかと思います。
cli-auto-promptパラメータを利用して入力補完を利用する
aws-cli v2にはcli-auto-promptというパラメータが用意されており、このパラメータを付けてawsコマンドを実行すると自動プロンプトモードが有効になります。
こちらを利用することによっても、自動プロンプトモードで入力補完を利用することができます。
F3キーを入力するとドキュメント表示のパネルも付いていたりかなりリッチな入力補完となります。
毎回、cli-auto-promptパラメータを入力するのが大変なので。
aws-cli用の設定ファイルである、~/.aws/configに下記の登録をしておけば、不完全なawsコマンドを実行時に自動プロンプトモードが起動する用になります。
# on-partialで不完全なawsコマンド実行時に自動プロンプトモードが起動する
[default]
cli_auto_prompt = on-partial
configファイルを設定し、aws s3まで入力してENTERを実行すると自動プロンプトモードになる。
総評
aws_completer.exeを利用していて不便は感じていませんでしたが。
ある時、cli_auto_promptの自動プロンプトの存在に気が付き、さわってみたら想像以上にリッチなプロンプトだったため割と驚きました。
この2つを併用することにより、Windows + PowerShell な環境での aws-cli v2 利用がだいぶ快適になるような気はします。



