WSL2 で aws-vault を使いたい
会社で IAM を切り変えたいときに便利なツールとして aws-vault を進められたのですが、自宅の環境の wsl2 で使うためには若干ハマったのでメモとして。
雑な要約
- asdf で aws-vault 入れました
- 認証キーの管理には Pass を使いました
- 環境変数をいくつか設定しました
- powerlevel10k で常に表示できるようにしました
環境
- WSL2
- 起動しているのは Ubuntu-20.04
aws-vaultのインストール
asdfのプラグインで入るので、それで入れてしまう。
virtualstaticvoid/asdf-aws-vault: aws-vault plugin for asdf version manager
雑にこんな感じで。
❯ asdf install aws-vault latest
❯ asdf global aws-vault 6.2.0
実行時エラーの解消
そのまま入れただけでは、上手く動かない(エラーは再現なので微妙に違うけど)
❯ aws-vault add personal
aws-vault: error: Specified keyring backend not available
(自分のローカルの問題かもしれないが)内部的に使っているキーを管理するためのツールがデフォルトではだめで、ついでにその類のツールも用意していなかった。
aws-vaultのドキュメントを読んでいると利用可能なキー管理ツールが記載されているので、それを参考にどれか入れる。
今回は GUI が不要だと考えたので、 Pass にした。
❯ sudo apt install pass
Pass で使う gpg key を設定する必要があるのでセットする。今回はすでに作っていたので使いまわし。
❯ pass init yumechi0525@gmail.com
この状態でいくつか環境変数を設定する。
❯ export AWS_VAULT_BACKEND=pass
❯ export AWS_VAULT_PASS_PREFIX=aws-vault
❯ export AWS_SESSION_TOKEN_TTL=3h
# ついでに補完も効かせる
❯ eval "$(aws-vault --completion-script-zsh)"
# gpg-agent が調子悪いときは下記もやる
❯ export GPG_TTY=$(tty)
(環境変数は後で .zshrc
に追記した)
この状態でアカウントを追加して、exec したら切り替わりました 🎉🎉🎉🎉
❯ aws-vault add personal
❯ aws-vault exec personal
Shell上で現在の IAM を表示する
romkatv/powerlevel10k: A Zsh themeを使う。
デフォルトだと aws
コマンドを打ち込もうとすると、 IAM が表示されますが、常に表示されているので show-on-command
の記述を見ながら下記をコメントアウト。
# typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile'
# typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi|terragrunt'
設定するとこんな感じに見えるので、一目で今どの IAM なのかわかる感動が…!
というわけで設定できました。やったね。
感想
WSL2 特有の? 問題にまたハマってしまったのですが、無事に設定できてよかったです。
(とはいえ試したのが個人アカウントの MFA なしのやつなので、もう少しまじめに試したほうが良いのですが)
追記
どうも認証の調子が悪くなったため MFA を有効にしたところ、うまく動きました。
また他の作業で WSL 経由でウィンドウが開くように設定したのですが、その結果 GUI のポップアップで gng キーにかけたパスワードを聞かれるようになりました(これは意図してなかったのだが…)。
ここでたまにパスワードを間違えてしまうのですが、これもたまに過去の認証状態を使おうとしてしまうため、 gpg-connect-agent reloadagent /bye
とかでリセットしてごまかしてたら何とかなりました。
Discussion