[AWS CLI]cli_auto_promptの補完設定をスクリプトの際にはOFFにする方法

2022.12.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • AWS CLI v2ではcli_auto_promptをONにすることで、実行時に自動プロンプトを表示してくれます。
  • 非常に便利ですがデフォルトでONに設定していると全ての実行時にプロンプトが表示されてしまいます。
  • そこで今回は、スクリプトに組み込む際やコマンドが分かりきっている時にはOFFにする方法を記録いたします。

環境

  • mac OS Monterey 13.0
  • aws cli 2.4.6

結論

  • cli_auto_promptonからon-partialに変更するだけです。
  • configファイルで設定している場合は以下のようにするだけで可能です。
[default]
region=xxxxx
output=json
cli_auto_prompt = on-partial

背景

  • ~/.aws/configcli_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/configcli_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サイトをご覧ください。