- t_o_dと申します。
- AWS CLI v2では
cli_auto_prompt
をONにすることで、実行時に自動プロンプトを表示してくれます。 - 非常に便利ですがデフォルトでONに設定していると全ての実行時にプロンプトが表示されてしまいます。
- そこで今回は、スクリプトに組み込む際やコマンドが分かりきっている時にはOFFにする方法を記録いたします。
環境
- mac OS Monterey 13.0
- aws cli 2.4.6
結論
cli_auto_prompt
をonからon-partialに変更するだけです。- configファイルで設定している場合は以下のようにするだけで可能です。
[default]
region=xxxxx
output=json
cli_auto_prompt = on-partial
背景
~/.aws/config
にcli_auto_prompt
をonにして補完設定をしておりました。- 通常時はプロンプト内で補完表示はもちろん、ドキュメントも見ることができて非常に便利です。
- ただ以下のようにawsコマンドの出力をパイプで渡してファイルに出力しようとした時にうまくいきませんでした。
# aとbというファイルにs3の内容を出力
# 処理が止まるので「Ctrl + C」で抜ける。
$ aws s3 cp s3://xxxx/xxxx - | tee a b >/dev/null
Warning: Output is not to a terminal (fd=1).
# ファイル自体は作成されているが正常ではない内容。
$ cat a
^[[4;1R%
- 内部で利用しているpagerが原因で起きることらしく、できれば完全なコマンドやスクリプトの際には補完をOFFにしたかったです。
内容
- 上記の背景からcli_auto_promptのDocumentを見ていると
on
設定の他にon-partialという設定があることが確認できました。
このモードは、既存のスクリプトまたはランブックがある場合、あるいはすべてのコマンドに対してプロンプトを表示するのではなく、不慣れなコマンドにのみ自動プロンプトを表示したい場合に特に便利です。
- 用途と同様なので、
~/.aws/config
にcli_auto_prompt = on-partial
の設定をして、再度以下のコマンドを実行してみたら正常にファイルに出力されました。
$ aws s3 cp s3://xxxx/xxxx - | tee a b >/dev/null
# 中身の確認
$ cat a
xxxxxxxxx
xxxxxxxxx
- ちなみに以下のように不完全なコマンドだと説明通り、プロンプトモードが表示されることを確認しました。
$ aws s3
# プロンプトモード表示
> aws s3
まとめ
- AWS CLI v2では便利な機能が豊富なことに加えて、用途に応じて細かい設定で切り替えられることがわかりました。
- これらを適宜利用して最適に日々活用してまいりたいです。
参考
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。