1
0

More than 1 year has passed since last update.

AWS CLIのスイッチロール、もっと楽でいいじゃないか(assume-roleツールを使おう)

Posted at

前書き

  • 先輩に教えてもらって便利!!ってなったので紹介

そもそもAssumeRoleとは

  • ロールを引き受けられる機能。ロールを引き受けることにより、ロール側で定義している権限での操作が可能になる。

下記のはっちゃけた記事がおもしろくわかりやすかったです。

https://dev.classmethod.jp/articles/iam-role-passrole-assumerole/

“assume-role” is 何?

  • 一時クレデンシャルをシェルの環境変数にセットしてコマンド実行してくれるいいやつ。

https://github.com/remind101/assume-role

何が良いか

  • そもそも—profileオプションに対応していないコマンドにおいても便利になる。
  • evalなどでクレデンシャルをセットすればコマンドごとにprofileを指定してMFAの認証コード打って...という手間がなくなる。
  • スイッチロールでいろいろアカウントまたいで作業しなきゃならないときに楽。

Assuむってみる

※適当にprofileは作っておいてください。

  • evalコマンドで、引数に与えたクレデンシャル情報をシェルに実行させる。

eval $(assume-role {profile名})

hogehoge$ eval $(assume-role hogehoge)
MFA code: xxxxxx
hogehoge$ 

これでクレデンシャルがシェルにセットされたので、いつものようにCLIを実行できます。

ちなみに assume-role profile名export AWS_ACCESS_KEY_ID... のような形式の出力で返してくるのでそのままevalコマンドの引数に与えるとクレデンシャル情報をシェルにセットするという挙動になっているっぽいですね。

https://github.com/remind101/assume-role#:~:text=If no command,assume-role prod)

If no command is provided, assume-role will output the temporary security credentials:
`$ assume-role prod
export AWS_ACCESS_KEY_ID="ASIAI....UOCA"export AWS_SECRET_ACCESS_KEY="DuH...G1d"export AWS_SESSION_TOKEN="AQ...1BQ=="export AWS_SECURITY_TOKEN="AQ...1BQ=="export ASSUMED_ROLE="prod"# Run this to configure your shell:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0