aws-vaultでassume-roleする

February 18, 2022

かなり今更感ありますがどうなってると一番ラクかってのが地味にわかりにくいので自分用にまとめます。

セットアップ

$ brew install aws-vault
$ aws-vault add default
Enter Access Key Id: XXXXXXXXXXXXXXXXXXXX
Enter Secret Key: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

$ cat <<EOF> ~/.aws/config
[default]
mfa_serial = arn:aws:iam::000000000000:mfa/username
cli_pager =
region = ap-northeast-1

[profile account1]
role_arn = arn:aws:iam::111111111111:role/rolename
source_profile = default

[profile account2]
role_arn = arn:aws:iam::222222222222:role/rolename
source_profile = default

(以下略)

EOF

~/.aws/credentials は使わない。基本は以上でOKで、あとはaliasや関数で少し楽をする。

aliasの設定例;

alias assume1="unset AWS_VAULT; aws-vault exec account1 -s --prompt=osascript -- "
alias assume2="unset AWS_VAULT; aws-vault exec account2 -s --prompt=osascript -d 12h -- "
  • -d durationはあらかじめassume先でexpire延長をしておかないと効果がないので注意。
  • --prompt=osascript をつけるとターミナル上に平文でトークンが残らないので少し良いです。
  • 毎回unsetするのだるいのでunset AWS_VAULT を入れておく。

使い方

# ワンショットで
$ assume1 aws s3 ls

# セッションとして
$ assume2 zsh
$ aws s3 ls

その他

クレデンシャルを平文ではなくkeychainに置けるのが最大のメリットですが、keychain timeoutがきつすぎると地味にストレスなので以下を参考に調整すると良いです。



Recent blog posts



(c) Copyright 2025 Kotaro Yoshimatsu