M-x でawscliを実行するために簡易な関数を書いた。

(autoload #'string-join "subr-x")
(autoload #'term-ansi-make-term "term")

(defvar aws-cli-buffer-name
  "A queue of strings whose echo we want suppressed.")

(defvar aws-cli-buffer-name "*AWS*"
  "AWS CLI execution buffer name.")

(defvar aws-cli-endpoint-url "http://localhost:4566"
  "AWS API endpoint.")

(defvar aws-cli-profile "default"
  "Profile name in ~/.aws/config.")


(defun aws-cli (line)
  "Execute AWS CLI command."
  (interactive "MCommand Line: ")
  (switch-to-buffer
   (funcall #'term-ansi-make-term
	    aws-cli-buffer-name
	    "bash" nil "-c" (string-join `("aws" "--no-paginate"
					   "--endpoint-url" ,aws-cli-endpoint-url
					   "--profile" ,aws-cli-profile
					   ,line)
					 " "))))

M-x aws-cli とするとサブコマンドを待ち受ける。=aws-cli-profile= の値 を切り替えることで使用するプロフィールを切り替えられる。送信するAPIの エンドポイントは aws-cli-endpoint-url で設定できる。

成長したらパッケージ化したい。オプションの設定などはtransientを使って スイッチできるようにしたい。=~/.aws/config= を読み取ってプロフィールを 選択することで切り替えられるような関数を追加したい。