はじめに
WSL2でaws-vault使えるようにするための手順を忘備録として書きます。
検証環境はWSL2のUbuntu20.04です。
なお、以下のコマンドでWSLのバージョンの確認ができます。
$ wsl -l -v
前提として必要なライブラリをインストールします。
$ sudo apt install build-essential curl git
今回はHomebrew経由でインストールするので、まずHomebrewをインストールします。
以下のページの「インストール」のコマンドを実行します。
https://brew.sh/index_ja
# 2022年3月時点
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストール後に以下のコマンドを実行します。
$ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
$ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
$ brew install gcc
以下のコマンドでヘルプが表示されることを確認して下さい。
$ brew help
aws-vaultをインストールします。
$ brew install aws-vault
以下のツールが必要なのでインストールします。
$ brew install pass gnupg
GPGの鍵を作成します。
名前とメールアドレスとパスワードなどを入力します。
$ gpg --gen-key
キーが作成できたかどうかは以下のコマンドで確認できます。
$ gpg --list-keys
passを初期化します。
以下のコマンドを実行してください。
キーIDはgpg --list-keys
コマンドの実行結果から参照して貼り付けてください。
$ pass init <キーID>
~/.bashrcか~/.zshrcに以下を追記してターミナルを再起動します。
export AWS_VAULT_BACKEND=pass
export AWS_VAULT_PASS_PREFIX=aws-vault
export AWS_SESSION_TOKEN_TTL=3h
プロファイルの設定を実施します。
コマンド実行後にIAMユーザのクレデンシャル情報を聞かれるので適宜入力します。
$ aws-vault add <プロファイル名>
# サンプルではawsというプロファイルを追加する例
# aws-valut add aws
以下のコマンドで設定したプロファイルが登録されているかどうかを確認します。
$ aws-vault list
以下のコマンドが正しく実行されることを確認して下さい。
$ aws-vault exec <プロファイル名> -- aws s3 ls
次に~/.aws/configファイルを修正します。
AWSのアカウントIDとユーザ名は適宜変更してください
※awsというプロファイルを追加したので以下のようになっていますが、profileの後の文字は追加したプロファイル名によって変わります。
[profile aws]
mfa_serial=arn:aws:iam::<AWSアカウントID>:mfa/<IAMユーザ名>
再度以下のコマンドを実行してみましょう。
$ aws-vault exec aws -- aws s3 ls
すると今度はMFAの入力を求められると思います。
MFAの4桁の数字を入力すると実行結果が表示されると思います。
トラブルシューティング1
以下のエラーが出る場合、
aws-vault: error: exec: aws-vault sessions should be nested with care, unset AWS_VAULT to force
以下のコマンドを実行します。
$ unset AWS_VAULT
トラブルシューティング2
以下のエラーが出る場合、
gpg: 警告: サーバ'gpg-agent'はこちらより古いです(2.2.19 < 2.3.4)
gpg: problem with fast path key listing: IPCパラメータエラーです - ignored
gpg: 公開鍵の復号に失敗しました: タイムアウトです
gpg: 復号に失敗しました: タイムアウトです
以下のコマンドを実行します。
$ gpgconf --kill all