こんにちは、小寺です。
冬休みに削除しようと思っていた開発環境を今更ながらクリーンアップしていました。

aws-nukeとは

以前、過去コラムでも投稿したのですが、AWSリソースを削除してくれるツールです。
最新バージョンはこちらで確認できます。本コラム執筆時の最新バージョンは2.25.0です。

使い方

少し前回とはやり方を変えて、CloudShellで以下を実行しました。
$ wget https://github.com/rebuy-de/aws-nuke/releases/download/v2.25.0/aws-nuke-v2.25.0-linux-amd64.tar.gz

ファイルを解凍します。
$ tar -zxvf aws-nuke-v2.25.0-linux-amd64.tar.gz

削除してみる

前提としてはOragnizationsnに所属しているLinkedAccountです。Oragnizationsから有効にしているサービスは今の状態ではない状態です。
CloudShellから削除を行います。詳細な設定はここでは割愛します。

$ ./aws-nuke-v2.25.0-linux-amd64 -c ./nuke-config.yml --no-dry-run
aws-nuke version v2.25.0 - Mon Sep 4 07:22:03 UTC 2023 - 2bd22d5e5c0cf6a4011b3c08a5b1c25e2e6c75bd

Do you really want to nuke the account with the ID XXXXXXXX and the alias ‘kodera-test’?
Do you want to continue? Enter account alias to continue.

kodera-test

アカウントAliasを入力します。
ここで、まずデフォルトVPCやデフォルトセキュリティグループは削除できない仕様になっています。マネジメントコンソールからでも同様ですよね。
最新バージョンでは以下がエラーになっていました。

以下、抜粋です。
ap-northeast-1 - GlueDatabase - amazon_security_lake_glue_db_ap_northeast_1 - failed
ap-northeast-1 - CloudTrailTrail - aws-controltower-BaselineCloudTrail - [Name: "aws-controltower-BaselineCloudTrail"] - failed
ERRO[0394] TrailNotFoundException: Unknown trail: arn:aws:cloudtrail:ap-northeast-1:901333602937:trail/aws-controltower-BaselineCloudTrail for the user: 901333602937
ap-northeast-1 - OSPackage - G119744294 - [CreatedTime: "2023-11-18T14:06:41Z", PackageID: "G119744294", PackageName: "analysis-nori"] - failed
ERRO[0394] ValidationException: Package included with OpenSearch Service. Cannot be deleted.
ap-northeast-1 - OSPackage - G120417983 - [CreatedTime: "2023-11-19T06:18:53Z", PackageID: "G120417983", PackageName: "amazon-personalized-ranking"] - failed
ERRO[0394] ValidationException: Package included with OpenSearch Service. Cannot be deleted.
ap-northeast-1 - OSPackage - G172136883 - [CreatedTime: "2023-10-12T21:11:41Z", PackageID: "G172136883", PackageName: "analysis-nori"] - failed
ERRO[0394] ValidationException: Package included with OpenSearch Service. Cannot be deleted.
ap-northeast-1 - OSPackage - G178461041 - [CreatedTime: "2023-10-12T21:12:49Z", PackageID: "G178461041", PackageName: "analysis-nori"] - failed

サービスで見てみると「CloudTrail」、「GlueDatabase」、「OpenSearch」の主の3つでした。
他のサービス起動にもよると思いますが、詳細を見ていきます。

・CloudTrail
Organizationsから過去に「Control Tower」を有効にしていたことがあり、CloudWatch Logsの保存先がOrganizationsのS3になっていました。
なので、エラーになっていました。管理アカウント側からCloudWatch Logsのグループを無効にして、CloudTrailの証跡も削除した後、無事に手動削除できました。

・Glue
ルートアカウントでDatabaseを削除しようとしましたが、権限不足ということでエラーになってしまいました。なぜだー。
ここはSecurity Lakeの設定が管理アカウントでされていたのかもしれないのですが、管理アカウント側では現段階ではリソースがないためサポートに問い合わせとしました。

・OpenSearch
ValidationException自体が存在しないリソース削除のエラーのようなので、こちらは問題なしとします。

aws-nukeで削除できないリソースたち

次に、まずはDefaultのリソースは削除できないです。例えば、Default VPCやSecurity Groupです。次にAWS Oraganizationsから設定したサービスたち。次にOrganizationsのLinkedアカウントでSCPで制御している場合はエラーになります。

今回、確認できなかったのは、OrganizationsのLinkedアカウントのままで検証を進めてしまったことです。いったんOrganizationsから離れた後にaws-nukeがどのように動作するのかは別途確認してみたいと思います。