はじめに
AWS Organizations (組織) の登場で、AWSアカウントの作成はコマンド一発で自動化出来るようになり、それを書いたブログ等は山ほどあります。
しかし、AWSアカウントの「削除」を自動化する記事が全く有りません。
AWS CLIの説明書を読んでも作成する create-account
は有りますが削除するコマンドは無し。
むしろやりたいのはこっちなのに。。
経緯
勉強会やハンズオンで一時的に使用するAWSアカウントを量産します。
これはAWS CLIでも
aws organizations create-account --email foo@bar.net --account-name hoge
とコマンド一発で完了します。
問題はここからで、勉強会終了後に量産したAWSアカウントを全て削除したい。
これはリソースの削除は手間がかかるからです。サービスコントロールポリシーで作成可能なリソースを制限していたとしてもそもそも面倒です。
AWSアカウントを削除すれば全てのリソースが一括削除されますから、これがスマートですよね。
(厳密には課金が停止するだけで、後はAWSが任意のタイミングでリソースを削除するのですが課金が停止されればこちらとしてはそれで良い)
ちなみにIAMユーザを使わないのは、同一AWSアカウントを複数人で共有するとリソースが競合が発生するからです。
結論
できない
何故できないのか
AWS OrganizationsにはAWSアカウントを削除するコマンドは無く、組織からAWSアカウントを排除する remove-account-from-organization
しか有りません。
これは単独AWSアカウントになる事を意味しますが、AWS Organizationsで作成したAWSアカウントにはクレジットカード情報等の情報がAWSアカウント作成を実行したマスターアカウントから引き継がれていない為そのままでは組織から排除出来ず、これらを手動で登録する必要があります。
これが原因です。
どうしてこうなった
単独AWSアカウントにすると決済情報が等が必要なのはそうですが、マスターアカウントからそれらを引き継いだAWSアカウントを作成するようにすれば済む話です。
百歩譲って、組織に所属した状態のままAWSアカウントを削除できれば組織に所属している間はマスターアカウントが支払うのですから問題無いはずです。
どうしてこうなった。。
まとめ
AWSアカウントの削除は自動化できない。