背景
AWS CLIがAssumeRoleによる自動クレデンシャル取得とMFAに対応しました! | Developers.IO
awscliは上記で説明されているような記述を用いることにより、assume-role権限のあるroleへswitchしてコマンドを実行することができます。
しかし、この記述法は比較的最近導入されたこと、使用されることがそれほど多くないこと、内部的にSTSを使っているため自前で同様の仕組みを実装することは手間がかかることなどにより、通常 ~/.aws/credentials
を見て自動的に認証情報を取得してくれるコマンドでもこのAssumeRole記法に対応してくれていないツールがあります(代表的なものにserverless, apex, terraform, vagrant-awsがあります)。
解決策
そこで、認証情報として環境変数が概ね優先されることを利用してラッパーコマンドを開発した人が結構います。
マイナーな欲求かつ簡単に実装できるため多数のリポジトリがありますが、以下がgithub上で自分が見つけた同様の目的のリポジトリ一覧です。
- ★99 remind101/assume-role: Easily assume AWS roles in your terminal.
- ★24 jbuck/assume-aws-role: Work with multiple AWS accounts more easily
- ★5 fujiwara/aswrap: AWS assume role credential wrapper
- ★3 mmmorris1975/aws-runas: A wrapper command to prepare the environment, or execute a command, using an AWS IAM role
- ★0 cayasso/aws-assume: AWS easy switch role
(※星の数は2018/01/09時点)
上記のリポジトリのうち、上2つは期待通り動くことを確認しました。
下3つはすみませんが動作確認をしていません。
結論
remind101/assume-role が期待通り動作しておりかつ星の数的にも定評があると思うので、機能的に問題なければそれを使えばいいと思います。