こんにちは、小寺です。
今までControl TowerのOUの操作はコンソールからしかできませんでしたが、今回アップデートによりついにControl TowerのOUの操作がAPIより可能になりました。
https://aws.amazon.com/about-aws/whats-new/2024/02/aws-control-tower-apis-register-organizational-units/

アップデート内容まとめ

今回のアップデートで追加されたAPIは以下です。
EnableBaseline/UpdateEnabledBaseline/DisableBaseline: OUでのベースラインの有効化、更新、無効化
GetEnabledBaseline/ListEnabledBaselines: 有効化したベースラインの情報を取得
GetBaselineOperation: 特定のOUの操作をモニタリング
ResetEnabledBaseline: 有効なベースラインを使用して OU のリソース ドリフトを修正
GetBaseline/ListBaselines: AWS Control Tower が管理するベースラインの情報を取得

AWS Control Tower のガバナンスに必要なベストプラクティスの構成、制御、リソースを含む AWS Control Tower ベースラインが有効になります。
また、API には AWS CloudFormationのサポートが含まれており、Infrastructure as Code (IaC)でOUの管理ができるようになりました!

利用する際の前提条件

・OU でベースラインの更新が必要な場合、新しいアカウントをプロビジョニングしたり、既存のアカウントを該当OUに登録ができないです。
・ランディング ゾーンの更新後に、OU ベースラインも更新する予定がある場合は、OU を再登録するか、OU ベースラインのバージョンをプログラムで再度更新をかけます。
・使用しているランディング ゾーンのバージョンと互換性のある最も高いベースラインに更新が推奨。
・ベースライン更新はロールバックできません。
・ベースラインの有効化は、一度に 1 つの OU を対象とします。したがって、親 OU が更新されても、ネストされた OU は自動的に更新されません。ネストされた OU を更新する前に、親 OU を更新する必要あり。
・UpdateEnabledBaseline API を呼び出すか、コンソールから OU を再登録すると、ベースラインの更新前に有効になっていたすべてのコントロールが OU に保持されます。
・複数のベースライン バージョンがランディング ゾーンのバージョンと互換性がある場合、アンマネージド OU でベースラインを有効にする場合は、最新のベースライン バージョンを使用する必要があります。

DisableBaseline例例

aws controltower disable-baseline \ --enabled-baseline-identifier arn:aws:controltower:us-west-2:123456789012:enabledbaseline/AB12CD34EF56GH789 \ --region us-west-2

EnableBaseline

{ "baselineIdentifier": "arn:aws:controltower:us-west-2::baseline:17BSJV3IGJ2QSGA2", "targetIdentifier": "arn:aws:organizations::123456789012:ou/o-kgj0txdhpa/ou-r9mj-4j3mzjql", "baselineVersion": "3.0", "parameters": [ { "key": "IdentityCenterEnabledBaselineArn", "value": "arn:aws:controltower:us-west-2:123456789012:enabledbaseline/XAHCR4CJTSI4W07MZ" } ] }

他にもAPIで操作できるControl Tower

2023年11月のアップデートでもAPIを使用してAWS Control Towerのランディングゾーンの運用を自動化できるようになっています。
当時、追加サポートされているAPIです。
・GetLandingZone/ListLandingZones – ランディングゾーンの設定オプションを検出します。
・CreateLandingZone/UpdateLandingZone/DeleteLandingZone – ランディングゾーンのリソースを管理します。
・ResetLandingZone – ランディングゾーンのドリフトを修復します。
・GetLandingZoneOperation – 進行中の変更をモニタリングします。

まとめ

元々マネジメントコンソールでできていた作業範囲ではあるものの、GUIを使わずに API レベルで実行できるようになったことで、UIが変更になった際に手順書の修正を行わずに対応ができる点や、IaC化による一元管理という点でメリットあると思います。