
aws-nuke(取扱注意)でAWSアカウントを掃除してみた
2025年8月時点では、[rebuy-de/aws-nuke]がすでにアーカイブされ、[https://github.com/ekristen/aws-nuke] というGithub Forkでメンテされてます。なので、aws-nukeをご利用する際には、[https://github.com/ekristen/aws-nuke] というRepoを基準にしましょう
はじめに
検証用 AWS アカウントで実験を重ねていると、不要リソースがどんどん増え「片付け」が大変になることがあります。
本番ではない、万が一削除されても影響が小さいアカウントであれば、リソースを一括で消してしまう方が楽な場合も多いでしょう。
そこで今回は、自分普段使っている一括削除ツール aws-nuke の基本的な使い方を紹介します。
⚠️ 注意
aws-nuke で削除したリソースは 復旧できません。
作業前に必ず 公式ドキュメント を熟読し、理解したうえで実行してください。
実行環境
- 実行端末
Apple M1 Max Macbook Pro (MacOS)
- Package Management
Homebrew 4.5.13
- Text Editor はお好み(例:Cursor)※ターミナルのみでも可
手順
参考リンク: 公式Doc
インストール
AWS Nukeリポジトリをクローンしてビルドしても構いませんが、Homebrew で簡単に入ります。
brew install ekristen/tap/aws-nuke
AWS Profileを用意する
AWS Nukeを実行する際に、リソースを削除するには、対象アカウントの権限が必要です。
ここでは例として AdministratorAccess を付与したプロファイル my-aws-profile を使用します。
コマンドでは --profile my-aws-profile
のように指定します。
公式DocのWarning事項を確認する
https://aws-nuke.ekristen.dev/warning/ に記載の注意事項を必ず確認してください。
特に重要なポイントは以下のとおりです。
--no-dry-run
を付けない限り、削除は実行されない(デフォルトはスキャンのみ)。まずは Dry-Run で結果を確認しましょう。- 削除実行時は 2 回 の確認プロンプトが表示される。
- アカウントに Alias が設定されていない 場合、ツールは実行されない。
- Alias に prod が含まれると実行不可(誤爆防止)。
- config.yaml に
blocklist
が無い、または空だと実行不可。ブロック対象が無い場合でもダミー値を入れる必要あり。 accounts
セクションに対象アカウント ID を必ず登録する。
configファイルを作る
config.yaml
に最初
regions:
- ap-northeast-1 # 対象のAWSリージョンを指定
blocklist:
- "999999999999" # ブロックしたい(このツールを実行してはいけない)アカウントがなくてもダミーの文字列が必要
accounts:
"012345678901": {my-aws-account} # 掃除したい対象のAWSアカウント
除外したいリソースをconfig.yamlに入れる
このコマンドでリソース名一覧をプリントする
aws-nuke resource-types
(もしくは aws-nuke resource-types >> resource-types.txt
でファイルに出力する )
resource-typesを確認したら、削除してほしくないリソースをconfig.yamlに入れるとこうなります。
(特にSecurityHubの自動セキュリティチェック系、IAM権限系、CloudFormationスタック系、Route53ドメイン系を消して欲しくないため)
regions:
- ap-northeast-1 # 対象のAWSリージョンを指定
blocklist:
- "999999999999" # ブロックしたい(このツールを実行してはいけない)アカウントがなくてもダミーの文字列が必要
accounts:
"012345678901": {my-aws-account} # 掃除したい対象のAWSアカウント
resource-types:
excludes:
- SecurityHub
- IAMAccountSettingPasswordPolicy
- IAMGroup
- IAMGroupPolicy
- IAMGroupPolicyAttachment
- IAMInstanceProfile
- IAMInstanceProfileRole
- IAMLoginProfile
- IAMOpenIDConnectProvider
- IAMPolicy
- IAMRole
- IAMRolePolicy
- IAMRolePolicyAttachment
- IAMRolesAnywhereCRL
- IAMRolesAnywhereProfile
- IAMRolesAnywhereTrustAnchor
- IAMSAMLProvider
- IAMServerCertificate
- IAMServiceSpecificCredential
- IAMSigningCertificate
- IAMUser
- IAMUserAccessKey
- IAMUserGroupAttachment
- IAMUserHTTPSGitCredential
- IAMUserMFADevice
- IAMUserPolicy
- IAMUserPolicyAttachment
- IAMUserSSHPublicKey
- IAMVirtualMFADevice
- Route53HealthCheck
- Route53HostedZone
- Route53Profile
- Route53ProfileAssociation
- Route53ResolverEndpoint
- Route53ResolverRule
- Route53ResourceRecordSet
- Route53TrafficPolicy
- CloudTrailTrail
- CloudFormationStack
- CloudFormationStackSet
- CloudFormationType
aws-nuke初回実行:AWSアカウントスキャン
nukeコマンドに configファイルを指定、AWS Profileを指定して実行する。
(デフォルトはDry Run
ですので、スキャンするだけになる)
aws-nuke nuke -c config.yaml --profile my-aws-profile
(もしくは、仮にaliasがmy-aws-account
の場合、echo my-aws-account | aws-nuke nuke -c config.yaml --profile my-aws-profile >> remove_list.txt
でスキャン結果をremove_list.txt
に出力する)
スキャン完了までは少し時間がかかります。
aws-nuke本実行:AWSリソース一括削除
「aws-nuke初回実行:AWSアカウントスキャン」の結果を確認し、問題がなければaws-nuke本実行を行います。
コマンドは以下となります。
aws-nuke nuke -c config.yaml --profile my-aws-profile --no-dry-run
AWSアカウントのaliasの入力は2回聞かれます。(1回目:スキャン開始時、2回目:スキャン完了・削除開始前)
削除対象が多い場合は時間がかかります。
進行状況はコンソールに逐次表示されるため、気長に待ちましょう。
まとめ
aws-nuke を使えば、検証用アカウントを短時間で「まっさら」な状態に戻せます。
ただし 復旧不能 かつ 強力すぎる ツールであるため、以下を徹底してください。
- 削除してはいけないアカウントやリソースを 誤って指定しない
- 必ず Dry-Run で結果を確認
- 実行前に バックアップやスナップショットを取るの推奨
- 公式ドキュメントを確認し、挙動をチェックする
安全に使いこなして、快適な検証ライフを送りましょう!
aws-nukeツールの使い方は、設定によってカスタマイズできる(filtering)ので、詳細は公式Docをご確認ください:
参考リンク
- aws-nuke Repository(ekristen フォーク): https://github.com/ekristen/aws-nuke
- 公式ドキュメント: https://aws-nuke.ekristen.dev/
- Warning ページ: https://aws-nuke.ekristen.dev/warning/