AWSアカウントのクリーンアップに役立つcloud-nukeのご紹介

AWSアカウントのクリーンアップに役立つcloud-nukeのご紹介

Clock Icon2025.07.01

AWSアカウントのクリーンアップツールとして、aws-nukeが有名です。

https://dev.classmethod.jp/articles/aws_nuke_intro/

同じ用途のツールとして、cloud-nukeというツールがあることを知りました。

gruntwork-io/cloud-nuke: A tool for cleaning up your cloud accounts by nuking (deleting) all resources within it

今回はこちらのツールを試してみたいと思います。

cloud-nukeとは

AWSアカウント内のリソースを削除することができるツールです。

Terragruntで有名なGruntwork社が作っています。

名前からAWS以外のクラウドも対応していそうですが、現状はAWSのみです。

削除に対応しているリソースはGitHub上で確認可能です。主要なサービスはカバーしている印象です。

CLIツールとして利用する以外にも、プログラムからライブラリとして呼び出してリソースの検査やカウントすることもできます。

cloud-nukeのインストール

いくつか方法はありますが、パッケージマネージャー経由でインストールします。

brew install cloud-nuke

cloud-nukeはデフォルトではGruntworkにテレメトリデータを送信します。

データを送信したくない場合は、以下の環境変数をセットします。

export DISABLE_TELEMETRY=true

リソースタイプの確認

cloud-nukeはデフォルトで対応している全てのリソースを削除の対象とします。

実行に時間がかかるため、今回はリソースを指定して実行していきます。

対応しているリソースタイプは以下のコマンドで確認できます。

cloud-nuke inspect-aws --list-resource-types
出力例
# AWS Resource Types
# AWS Resource Types
• accessanalyzer
• acm
• acmpca
• ami
• apigateway
• apigatewayv2
• app-runner-service
• asg
• backup-vault
• cloudtrail
• cloudwatch-alarm
• cloudwatch-dashboard
• cloudwatch-loggroup
• codedeploy-application
• config-recorders
• config-rules
• data-sync-location
• data-sync-task
• dynamodb
• ebs
• ec2
# 省略

リソースの検査

サブコマンドinspect-awsを指定すると、リソースを破壊せずに検査することが可能です。

削除前に実行して、対象を確認するのに役立ちます。

任意の方法で、AWS認証情報をセットします。

export AWS_ACCESS_KEY_ID=hoge
export AWS_SECRET_ACCESS_KEY=hoge
export AWS_SESSION_TOKEN=hoge

--resource-typeで対象のリソースを絞ることができます。今回はec2を対象としています。

cloud-nuke inspect-aws --resource-type ec2

リージョン指定なしの場合は、全リージョンが対象となります。

削除可能なリソースが出力されました。

出力例
# AWS Resource Query Parameters
┌─────────────────────────────────────────────────────────────┐
| Query Parameter         | Value                             |
| ----------------------------------------------------------- |
| Target Regions          | 18 regions (too many to list all) |
| Target Resource Types   | ec2                               |
| List Unaliased KMS Keys | false                             |
└─────────────────────────────────────────────────────────────┘

 INFO  Found 1 ec2 resources in ap-northeast-1
 INFO  Done searching for resources
 INFO  Found total of 1 resources

# Found AWS Resources
┌────────────────────────────────────────────────────────────────┐
| Resource Type | Region         | Identifier          | Nukable |
| -------------------------------------------------------------- |
| ec2           | ap-northeast-1 | i-XXXXXXXXXXXXXXXXX | -       |
└────────────────────────────────────────────────────────────────┘

i-XXXXXXXXXXXXXXXXXのEC2が検出されていますね。

リソースの削除

削除の実行には、awsサブコマンドを指定します。--dry-runオプションを付けることでDry Runを行っています。

--region指定は必須ではないです。

削除対象リソースのリージョンが前のコマンドで分かったので、実行時間短縮のためにリージョンを指定しています。

cloud-nuke aws --resource-type ec2 --dry-run --region ap-northeast-1

結果問題なければ、--dry-runオプションを外して実行します。

cloud-nuke aws --resource-type ec2 --region ap-northeast-1

削除の確認メッセージが出てきます。問題なければ、nukeと入力します。

WARNING  THE NEXT STEPS ARE DESTRUCTIVE AND COMPLETELY IRREVERSIBLE, PROCEED WITH CAUTION!!!

Are you sure you want to nuke all listed resources? Enter 'nuke' to confirm (or exit with ^C) :

しばらく待つと、リソースの削除が完了したことが分かります。

Nuking batch of 1 ec2 resource(s) in ap-northeast-1 [1/1] ███████████ 100% | 36s
 INFO  No resources touched in this run.

削除対象リソースからの除外

オプションを使って、リソースタイプやリージョンレベルで削除対象からの除外が可能です。

  • --exclude-resource-type - リソースタイプ
  • --exclude-region - リージョン

リソースレベルの除外には設定ファイルが必要になります。

以下のファイルを用意します。

ec2-exclude-test.yaml
EC2:
  exclude:
    names_regex:
      - cloud-nuke-test

設定ファイルなしで、削除対象になることを確認します。

cloud-nuke aws --resource-type ec2 --region ap-northeast-1 --dry-run

削除対象にリソースが表示されています。

出力例
# AWS Resource Query Parameters
┌──────────────────────────────────────────┐
| Query Parameter         | Value          |
| ---------------------------------------- |
| Target Regions          | ap-northeast-1 |
| Target Resource Types   | ec2            |
| List Unaliased KMS Keys | false          |
└──────────────────────────────────────────┘

 INFO  Found 1 ec2 resources in ap-northeast-1
 INFO  Done searching for resources
 INFO  Found total of 1 resources

# Found AWS Resources
┌────────────────────────────────────────────────────────────────┐
| Resource Type | Region         | Identifier          | Nukable |
| -------------------------------------------------------------- |
| ec2           | ap-northeast-1 | i-XXXXXXXXXXXXXXXXX | -       |
└────────────────────────────────────────────────────────────────┘

次に設定ファイルありで試してみます。

cloud-nuke aws --resource-type ec2 --region ap-northeast-1 --config ec2-exclude-test.yaml  --dry-run

指定したEC2が削除対象に表示されないことを確認できました。

出力例
# AWS Resource Query Parameters
┌──────────────────────────────────────────┐
| Query Parameter         | Value          |
| ---------------------------------------- |
| Target Regions          | ap-northeast-1 |
| Target Resource Types   | ec2            |
| List Unaliased KMS Keys | false          |
└──────────────────────────────────────────┘

 INFO  Done searching for resources
 INFO  Found total of 0 resources

# Found AWS Resources
┌───────────────────────────────────────────────┐
| Resource Type | Region | Identifier | Nukable |
| --------------------------------------------- |
└───────────────────────────────────────────────┘
 INFO  Nothing to nuke, you're all good!

おわりに

cloud-nukeの基本的な機能について紹介しました。

この他にも、特定の期間より前に作成されたリソースの削除やタグを使った削除タイミングのコントロールなど便利そうな機能があります。

そのうち、aws-nukeとの比較もやってみたいと思います。

興味がある方はぜひ試してみてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.