🗃

WSL2 で aws-vault を使いたい

2020/12/06に公開

会社で 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 なのかわかる感動が…!

terminalのスクショ

というわけで設定できました。やったね。

感想

WSL2 特有の? 問題にまたハマってしまったのですが、無事に設定できてよかったです。
(とはいえ試したのが個人アカウントの MFA なしのやつなので、もう少しまじめに試したほうが良いのですが)

追記

どうも認証の調子が悪くなったため MFA を有効にしたところ、うまく動きました。

また他の作業で WSL 経由でウィンドウが開くように設定したのですが、その結果 GUI のポップアップで gng キーにかけたパスワードを聞かれるようになりました(これは意図してなかったのだが…)。

ここでたまにパスワードを間違えてしまうのですが、これもたまに過去の認証状態を使おうとしてしまうため、 gpg-connect-agent reloadagent /bye とかでリセットしてごまかしてたら何とかなりました。

Discussion