AWSを利用するうえで一時的に別のIAMロールの権限に切り替えて作業するためにスイッチロールをすることがあるかと思います。そんな中で最近 AWS CLI を利用してのスイッチロールをする機会があったのですが、やり方がわからず手間取ったので備忘として紹介できればと思います。ここでは2つ方法を紹介しますので、ぜひ参考にしてみてください。
方法1 -configファイルの修正-
一つ目の方法はconfigファイルを修正する方法です。
以下パスにあるファイルをメモ帳等で開きます。
"C:\Users\<ユーザ名>\.aws\config"
以下を追記し保存します。
[profile <任意のプロファイル名>] #スイッチロール先のARN role_arn = arn:aws:iam::<スイッチロール先のアカウントID>:role/<ロール名> source_profile = default #リージョン ex:ap-northeast-1 region = <リージョン名> #MFA識別子。MFA認証がある場合 mfa_serial = arn:aws:iam::<アカウントID>:mfa/<ユーザ名>
あとはコマンド実行時に「––profile <任意のプロファイル名>」をつけるだけでスイッチ先のロールで実行できるようになります。
aws sts get-caller-identity --profile <任意のプロファイル名>
この方法はconfigファイルを修正し、コマンドごとに「–profile <任意のプロファイル名>」をつけるだけなので簡単です。
方法2 -一時的なアクセスキーの取得-
2つ目の方法は一時的なアクセスキーを取得し設定する方法です。
以下コマンドでスイッチロール先の情報を取得します。
aws sts assume-role –-role-arn <スイッチロール先のarn> --role-session-name <任意のセッション名>
このコマンドを実行すると一時的なアクセスキー、シークレットアクセスキー、セッショントークンが表示されるので、以下コマンドを用いてそれぞれ設定します
#取得したアクセスキー入力 set AWS_ACCESS_KEY_ID= <アクセスキー> #取得したシークレットアクセスキー入力 set AWS_SECRET_ACCESS_KEY= <シークレットアクセスキー> #取得したセッショントークン入力 set AWS_SESSION_TOKEN= <セッショントークン>
以下コマンドでスイッチロールしたことを確認します。
aws sts get-caller-identity
これでスイッチロール完了です。方法1よりかは手間かもしれませんが毎回「–profile ~」をつけてコマンド実行するのが面倒という人には良いかもしれません。
おわりに
今回はAWS CLIでのスイッチロールについて紹介しました。ぜひ参考にしてください。
