AWS マネジメントコンソールのスイッチロール履歴を操作するスクリプトを作成してみた

AWSマネジメントコンソールで全く使用しないスイッチロールの履歴が残り続けてしまうことはありませんか?
2021.07.20

AWSマネジメントコンソールでスイッチロールを行う場合、その履歴が残りますが、その履歴はクッキーとしてWebブラウザに保存されます。
使用しない履歴は消したいものですが、クッキーを拡張機能を用いて取得し、デコード、編集、エンコード ...
とかなり面倒です。

そこで、この面倒な作業を簡単に行うスクリプトを作成しました。(Mac Google Chromeユーザ向けです)
このスクリプトを使用することで、Webブラウザに保存されたクッキーの確認、削除、追加などを簡単に行うことできます。

動作環境

前述した通り、Mac・Chrome環境を想定しています。他の環境でも使用できると思いますが、パスの変更などが必要となります。
また、スクリプトは、Pythonで記述しています。

  • Mac
  • Python 3系
  • Google Chrome

使用方法

インストール

こちらのリポジトリをクローンします。

$ git clone https://github.com/cH6noota/switch-role-cli.git

その後、クローンしたディレクトリに移動して、インストールを行います。

$ cd switch-role-cli
$ bash install.sh
Create /Users/hogehoge/.aws-sw
Run the following command : source "/Users/hogegoge/.zshrc"

Run the following command : source "/Users/hogegoge/.zshrc"

インストール時、設定ファイルの読み込みが促されますのでその通り実行します。

$ source "/Users/hogegoge/.zshrc"

これでswコマンドとして使用できるようになりました。

使ってみる

スイッチロールのリスト

まず、はじめにスイッチロールの履歴を読み込んでみます。

$ sw ls
Set user : Default
Index  Account id         Role name                    View name                           Color   
------ ------------------ ---------------------------- ----------------------------------- --------
0      123456789012       switch-target-role           hoge                                E74C8E  
------ ------------------ ---------------------------- ----------------------------------- --------
1      123456789012       switch-target-role           fuga                                7838F9  
------ ------------------ ---------------------------- ----------------------------------- --------

スイッチロールの削除

続いて、スイッチロールの削除を行ってみます。
注意点として、Webブラウザは終了して操作するようにしてください。

$ sw del 0                                                
Index  Account id         Role name                    View name                           Color   
------ ------------------ ---------------------------- ----------------------------------- --------
0      123456789012       switch-target-role           hoge                                E74C8E  
Proceed [y/n]?y

スイッチロールの追加

スイッチロールの追加はARNを引数にしても追加が可能です。
こちらも同様にWebブラウザは終了して操作するようにします。

# ARN option
$ sw add arn:aws:iam::123456789012:role/switch-target-role
View name :hoge-fuga
Color [Enter(ramdom)]:D253F2

# No ARN option
$ sw add
Account id :123456789012
Role name :switch-target-role
View name :hoge-fuga
Color [Enter(ramdom)]:

Webブラウザプロファイルの変更

プロファイルを変更する場合は、番号またはDefaultを指定します。

$ sw profile        
New user number of Default [1~3 / Default]:1

aws/config formatでの出力

aws/config formatでの出力も可能です。
例えば、この出力結果を利用することで、AWS Extend Switch Rolesの移行もスムーズに行えます。

$ sw output
[fuga]
role_arn = arn:aws:iam::123456789012:role/switch-target-role
color = 7838F9

[hoge-fuga]
role_arn = arn:aws:iam::123456789012:role/switch-target-role
color = D253F2

[hoge-fuga]
role_arn = arn:aws:iam::123456789012:role/switch-target-role
color = A72B1B

最後に

スイッチロールの履歴を操作するスクリプトを作成してみましたが、クッキーの取得が初めてで難しかったです。
とりあえず、自分用に作ってみましたが、時間がある時にでもコードのリファクタリングを行います。