Control Towerを再登録しようとしたら'AWSServiceRoleForAWSControlTower' has a conflictと表示されて詰みかけた話

# はじめに
1年ほど前にお遊びでControl Towerを有効化しましたが、諸々の課金を抑えるために撤退してしまいました。仕事で使いそうな感じがしてきたので練習がてら個人環境で構築してみるかと思い立ちいざ構築を開始。
すると、大半の設定は完了したものの、`'AWSServiceRoleForAWSControlTower' has a conflict`というエラーがあちこちのAWSアカウントを登録する際に頻発してしまいました。解決方法は意外と単純でしたが、備忘ログとして残しておきます。

# 解決方法(急いでいる人用)

Control Towerを有効にしているアカウントで `AWSControlTowerBP-BASELINE-SERVICE-LINKED-ROLE`のStackSetからエラーとなっているAWSアカウントのスタックを削除することで解消する。

# 解決に至るまで

## 失敗している画面
見事にエラーが出まくってます。情報の部分を開くと押すと「`AWSControlTowerExecution`はあるか？」、「STSがホームリージョンで無効になってないか？」と聞かれますが、実際はどちらも原因ではないのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/488c4b1b-92bf-4c4f-9e05-127701d07ac5.png)

OUのページを開くとこのような感じでエラー文が出ておりました。
> AWS Control Tower failed to deploy one or more stack set instances: StackSet Id: AWSControlTowerBP-BASELINE-SERVICE-LINKED-ROLE:f0272774-fd45-49d7-8944-5d6f5f06b950, Stack instance Id: arn:aws:cloudformation:ap-northeast-1:<AWS Account ID>:stack/StackSet-AWSControlTowerBP-BASELINE-SERVICE-LINKED-ROLE-95a2c096-22b7-466f-8ee5-039bd996158a/1e275ed0-aaa0-11ee-96d0-06f707923661, Status: INOPERABLE, Status Reason: ResourceLogicalId:ControlTowerServiceRole, ResourceType:AWS::IAM::ServiceLinkedRole, ResourceStatusReason:Resource of type 'AWS::IAM::ServiceLinkedRole' with identifier 'AWSServiceRoleForAWSControlTower' has a conflict. Reason: SLR [AWSServiceRoleForAWSControlTower] is in use by other resources: [[RoleUsageType(Region=ap-northeast-1, Resources=[arn:aws:organizations::<AWS Account ID>:account/o-in4yelf0gu/<AWS Account ID>])]]

ざっくり要約すると「`AWSServiceRoleForAWSControlTower`というロールがすでに存在しているのでデプロイできないよ」という意味合いになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/993ca900-a897-4a86-bd01-b5f49af24932.png)


## では削除しよう

言われた通り削除しようと、子アカウントのIAMのページに遷移し検索を実施したところ、、、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/c58566aa-d802-43fd-9422-4c33b0e6795b.png)

そうです。そんなロールは元からなかったのです。

## じゃあどうする

そうだGeminiに相談だ！と聞いてみるが、特に良い回答はもらえず。挙句の果てには「ちゃんとコピペしてロールを検索してますか？」とちょっと怒られる始末。。。

## 見えた一筋の光

何度もControl Towerへの登録を試してみると、このロールを作成する「AWSControlTowerBP-BASELINE-SERVICE-LINKED-ROLE」というStackSetの更新がスキップされているような挙動を発見。つまり、OUの再登録をしようとしてもこのStackSetが更新されないことからエラーが出続けていることが判明。
ちなみにStackSetのエラー文も同じようなもの。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/e3840684-2302-4508-ad83-f9921fed5a66.png)

## 解決方法
いろいろと長くなりましたが、StackSetが更新されずエラー内容を引き継いでしまっているのが原因なので、いったんこのスタックからエラーになっているAWSアカウントのスタックを削除すればエラーは解消。

StackSetからスタックを削除を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/28ff99cc-30f5-4527-aee2-e191ed3f3afe.png)

これまで失敗していたAWSアカウントを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/e34b6ce6-7250-4c54-8dde-b61c6dfec1ff.png)

その後、OUを再登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/9f133797-4917-4668-97f4-89ddbafb5594.png)

すると、今後はこれまでエラーになっていたAWSアカウントへのスタックの作成が成功し
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/c4016248-68a9-4156-8301-40f3fe883c3d.png)

無事にControl Towerへの登録も完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295848/1d8d2b21-e06f-478e-929d-e941e39405db.png)


# おわりに
なぜ、このようなエラーが出てしまったかは分かっていません。Control Towerの再登録が原因かなと思いつつ、エラーになっていないAWSアカウントもあるので何とも言えない感じでした。
AIに聞いてもわからなかったことを解決できるのが気持ちいものになってきたなと思う今日この頃です。