🪪
オレオレawspでサクッとAWS CLIのプロファイルを切り替える
オレオレawsp
AWS CLIのプロファイル切り替えといえばAWSP(AWS Profile Switcher)が定番ですが、何気にnode前提なのが面倒ということで大好きなfzfを使って自作してみました。
基本的にやってることは、プロファイルをリストして環境変数にセットするだけなのですが、ついでなので本家でちょっと不満だったところを改善。
- 現在設定中のプロファイルを表示するようにした。
- 選択時にプロファイルの設定内容を表示するようにした。
- IAM Identity Center (旧AWS SSO) のトークンの期限切れ等も分かるようになった。
- プロファイル設定を解除できるようにした。
- プロファイルがいっぱいあっても~(チルダ)で一発選択可能。
% awsp
>
6/6
CURRENT PROFILE=N/A
dev-admin
> dev-readonly
lab-admin
master
security
~N/A
╭──────────────────────────────────────────────────────────────────────╮
│ Name Value Type Location │
│ ---- ----- ---- -------- │
│ profile dev-readonly manual --profile │
│access_key ****************ZQhV sso │
│secret_key ****************6X39 sso │
│ region us-west-2 config-file ~/.aws/config │
╰──────────────────────────────────────────────────────────────────────╯
前提環境
- fzf
- zsh(自分はzsh派なので確認してませんがbashでも動くんじゃないかな?)
-
GNU sed(Macの場合)
- macOS標準のsedはBSD系でGNU版と挙動が違うので
command i expects \ followed by text
みたいなエラーでコケます。 - 自分はHomebrewとかでgnu-sed入れてaliasしてます。
- macOS標準のsedはBSD系でGNU版と挙動が違うので
セットアップ
コピペするか、GitHubに置いてある.zshrc.func.awsp
を.zshrcにインポートするだけです。
.zshrc.func.awsp
func awsp() {
local profile=` \
aws configure list-profiles | sed '/^default$/d' | sort -n | \
sed -e "1iCURRENT PROFILE=${AWS_PROFILE:-N/A}" -e '$a~N/A' | \
fzf --reverse --preview-window=down --header-lines=1 \
--preview '[[ {} =~ ^~ ]] || aws configure list --profile {}' \
`
export AWS_PROFILE=${profile##\~*}
[[ -n "$AWS_PROFILE" ]] || unset AWS_PROFILE
}
AWS CLIのプロファイル名に~(チルダ)を使う人はいないと思いますが(そもそも使えない?)、~(チルダ)は設定解除のショートカットに使用してるのでご注意ください。
Discussion