AWSのWebコンソールでスイッチロールを適用した後に名称や色を変更したい

# やりたいこと

<img width="495" alt="aws_switchrole-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55620/b055c780-84d7-08c9-1632-466d61dd710e.png">

上の画像のような、AWS Webコンソールでスイッチロールを適用した後に、履歴として保存される各ロールの名称やカラーを変更したいのです。

Webコンソール上ではそれを変更する入り口は見つけられませんでした。

もう1回同じくスイッチロールを適用すれば履歴に追加することができ、
履歴は最大5件までらしいので必要なだけ再適用するのが正攻法でしょうけど、
何か他に方法はないのか🤔

とやってみてうまくいったのでそのメモのようなものです。


# 結論

AWS Webコンソールでのスイッチロールはブラウザのクッキーに `noflush_awsc-roleInfo` のキーで保存されているようで、
それを変更してしまえばWeb画面に反映されます。

逆にロール履歴を丸ごと削除したい場合は、クッキーから保存先のキーを削除するしかないようです？


* **これから書く方法はクッキーを無理やり変更する方法なので、操作ミスや値ミスなどの人的ミスや、AWSコンソールの仕様変更等で予期せぬ結果を招く可能性がありますし、それによって生じた如何なる問題も私にはどうしようもありません。**
* Safariの場合だけを書きます。他のブラウザの場合は手順が異なると思われます。



# 変更手順

### 1. 各ブラウザの開発機能からawsが利用しているクッキーを見る。

AWS Webコンソールを開きます。
そしてブラウザ機能の開発者メニューを表示します。

```    
* Safariの場合: [開発] -> [Webインスペクタを表示] -> [ストレージ]タブ -> 🍪Cookie (console.aws.amazon.com)
```   

<img width="1357" alt="inspector-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55620/18a3226a-281d-87e5-01b0-56fc17778cf1.png">



 
### 2. `noflush_awsc-roleInfo` のキーを探してコピーする。

以下のような、URLエンコードされた値がコピーできます。

```
%7B%22bn%22%3A%22hogehogetarou%22%2C%22ba%22%3A%22hogehogeaccount%22%2C%22rl%22%3A%5B%7B%22a%22%3A%22fugafuga%22%2C%22r%22%3A%22fugafugarole%22%2C%22d%22%3A%22fugafugarole%2520%2540%25fugafuga%22%2C%22c%22%3A%22B7CA9D%22%7D%5D%7D%0A
```


### 3. `noflush_awsc-roleInfo` の値をデコードしてみる。

URLエンコードされているのをデコードしてみると、以下のような設定値のJSONであることがわかりました。
スイッチロール履歴が複数ある場合、`rl` の配列にその分増えます。

```
{"bn":"hogehogetarou","ba":"hogehogeaccount","rl":[{"a":"fugafuga","r":"fugafugarole","d":"fugafugarole%20%40%fugafuga","c":"B7CA9D"}]}
```

* 多分 `rl` 配列がスイッチロール履歴で、この各値の `d` が表示名で、`c` が表示カラーだと推測できるので、これを変更すればいけそうです。


### 4. 変更したいように値を編集する。

`d` を表示名、 `c` を表示カラーとして、変更したいように変更します。
`c` はHEX値です。
スイッチロール画面だと用意された6色しか選べない？と思いますが、有効なHEX値ならどんな色にもできると思います。（事実冒頭のサンプルの画像では、強い赤色に変更しています。）

改行など入れて見やすくしたり整形したりすると後で再設定するときにおかしくなると思うので、1行のまま編集していきます。

```
{"bn":"hogehogetarou","ba":"hogehogeaccount","rl":[{"a":"fugafuga","r":"fugafugarole","d":"fugafugarole%20%40%fugafuga-update","c":"FF0000"}]}
```


### 5. 変更した値を再びURLエンコードする。

クッキー `noflush_awsc-roleInfo` に同じ形式で設定し直すために、[4]で編集した値をURLエンコードします。

```
%7B%22bn%22%3A%22hogehogetarou%22%2C%22ba%22%3A%22hogehogeaccount%22%2C%22rl%22%3A%5B%7B%22a%22%3A%22fugafuga%22%2C%22r%22%3A%22fugafugarole%22%2C%22d%22%3A%22fugafugarole%2520%2540%25fugafuga-update%22%2C%22c%22%3A%22FF0000%22%7D%5D%7D%0A
```


### 6. URLエンコードした値を `noflush_awsc-roleInfo` に設定する。

もしかしたらブラウザによっては開発者機能から直接編集できるかもしれませんが、
Safariの場合は、インスペクタからJavaScriptを実行してクッキーを無理やり上書きします。

インスペクタ下部の `> ` の入力欄に、以下のようなクッキーを設定するコードを書いて、エンターキーで実行します。

```
document.cookie='noflush_awsc-roleInfo=『上記でURLエンコードした値』'
```

サンプル

```
document.cookie='noflush_awsc-roleInfo=%7B%22bn%22%3A%22hogehogetarou%22%2C%22ba%22%3A%22hogehogeaccount%22%2C%22rl%22%3A%5B%7B%22a%22%3A%22fugafuga%22%2C%22r%22%3A%22fugafugarole%22%2C%22d%22%3A%22fugafugarole%2520%2540%25fugafuga-update%22%2C%22c%22%3A%22FF0000%22%7D%5D%7D%0A'
```

<img width="1369" alt="cookie2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55620/d15d397a-a44d-026d-f160-9a13561da733.png">



### 7. AWSコンソール画面をリロードする。

ブラウザで画面をリロードすれば、変更した値の通りにロール履歴の表示名と表示カラーが変わっているはずです。


もしおかしくなったら、同じ手順で何か値ミスがないか探して修正したり、
一旦 `noflush_awsc-roleInfo` を削除して、再度スイッチロールの適用をすれば良いと思います。

---

おわり