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
利用がだいぶ快適になるような気はします。