はじめに
本記事の目的
本記事は、AWSアカウント内のリソースを一括で削除できるCLIツール「aws-nuke」について、はじめて使う方にも分かりやすく解説することを目的としています。インストール方法から実行、運用上の注意点まで一通り扱います。テストや検証で増えたリソースを効率よく片付けたい方に向けた内容です。
aws-nukeが向く場面
- サンドボックスや検証用アカウントのクリーンアップ
- 短期間で作成した複数リソースの一括削除
具体例:実験で作ったEC2やS3、IAMのテスト用ユーザーをまとめて掃除したい場面で役立ちます。
重要な注意点(必読)
aws-nukeは強力で対象リソースを完全に削除します。誤って本番アカウントで実行すると重大な障害になります。まずは必ず検証アカウントで動作を確認し、dry-run(削除予定の確認)を使って結果を確認してください。また、実行には十分なIAM権限が必要です。
本記事の構成
全8章で、ツールの概要、インストール、設定ファイルの書き方、実行方法、運用上の注意点、実例とベストプラクティス、まとめを順に解説します。各章で手順や具体例を提示しますので、段階を追って理解できます。
aws-nukeとは何か?
概要
aws-nukeは、AWSアカウント内のリソースを自動で検出し、一括で削除できるオープンソースのコマンドラインツールです。サンドボックスや検証用アカウントのリセット、不要リソースの整理に向いています。手作業で一つずつ消す手間を省き、短時間でクリーンな状態を作れます。
主な特徴
- リソースの自動検出:EC2、S3、RDSなど多くのサービスを対象にします。
- 削除プランの確認:実行前にどのリソースが削除されるかをプレビューできます。
- 例外設定:設定ファイルで残すリソースを指定できます。
使いどころの具体例
- 学習や検証で使ったアカウントを初期状態に戻すとき
- CI/CDやテスト環境のクリーンアップを自動化したいとき
- 長期間放置された不要リソースを一括整理したいとき
利点と注意点
利点は高速かつ確実に不要なリソースを削除できる点です。注意点として、誤って本番アカウントで実行すると重大な影響が出ます。実行前にプランの確認や除外設定の検証を必ず行ってください。アクセス権限も最低限の原則に従い、専用のクリーンアップ用アカウントかロールで運用することをおすすめします。
動作イメージ(簡単)
- aws-nukeがアカウントのリソースを一覧化します。
- 削除候補をプレビューで確認します。
- 同意すると実際に削除を実行します。
次章ではインストールと初期設定について詳しく説明します。
aws-nukeのインストールと初期設定
概要
aws-nukeはGo製の実行ファイルとして配布されています。ここではLinux/macOSでのダウンロードとソースビルド、初期の認証設定と動作確認手順を丁寧に説明します。
ダウンロードしてインストール(Linux/macOSの例)
- リリースページから該当プラットフォームのアーカイブを取得します(例ではバージョン変数を使います)。
例:
VERSION=v2.X.Y
wget https://github.com/rebuy-de/aws-nuke/releases/download/$VERSION/aws-nuke-$VERSION-linux-amd64.tar.gz
tar -xzf aws-nuke-$VERSION-linux-amd64.tar.gz
sudo mv aws-nuke /usr/local/bin/
sudo chmod +x /usr/local/bin/aws-nuke
macOSではファイル名にdarwinが含まれます。
ソースからビルドする方法(Goがインストール済みの場合)
Goのコマンドでインストールできます。例:
go install github.com/rebuy-de/aws-nuke/v2@latest
ビルド後は$GOPATH/binまたは$HOME/go/binにバイナリが置かれます。パスを通して使ってください。
AWS認証情報の準備
通常のAWS CLIの設定手順で問題ありません。aws configureでプロファイルを作成するか、環境変数(AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY)を使います。プロファイルを使う場合は–profileオプションで指定します。
実行前の確認
インストール確認: aws-nuke –version や aws-nuke –help を実行して動作を確かめてください。実際に削除を行う前に、必ずテスト実行(dry-run)で対象リソースを確認してください。
設定ファイル(nuke-config.yaml)の書き方
概要
aws-nukeはYAMLで対象アカウントや削除ルールを指定します。重要アカウントの除外や特定リソースの保護をここで定義します。わかりやすい例を使って説明します。
基本構造
- account-block: 対象アカウントの指定(IDやタグによる)
- filters: リソース単位で除外・含めるルール
- resource-type: リソースごとの細かいフィルタ
具体例(抜粋)
accounts:
"123456789012":
filters:
IAMUser: ["admin", "deploy-user"]
S3Bucket: { exclude: ["important-bucket"] }
global:
exclude-regions: ["us-gov-west-1"]
この例ではアカウント123456789012でIAMユーザー名と特定S3バケットを除外します。
よく使う設定項目と説明
- accounts: 削除対象のアカウントを列挙します。IDの代わりにタグ条件も使えます。
- filters: リソース名やタグで除外します。たとえばGuardDutyやInspectorは組織単位で働くため、個別に除外指定が必要です。
- resource-specific: 各種サービスごとに細かい除外や閾値を設定できます。
注意点
- 設定は間違えると大量削除につながります。変更前にdiffや–no-dry-runオプションを確認してください。
- Organizationsやリージョン単位のサービスは個別に除外を忘れやすいので注意してください。
aws-nukeの実行方法と主要コマンド
基本コマンド
実行の基本形は次の通りです。
aws-nuke -c nuke-config.yaml --profile your-profile
このコマンドは設定ファイルを読み込み、指定したプロファイルのアカウントを対象に削除候補を検出します。
事前確認(dry-run)
削除は不可逆なので、必ずdry-runで確認してください。
aws-nuke -c nuke-config.yaml --profile your-profile --dry-run
dry-runでは実際の削除は行わず、削除されるリソースの一覧を表示します。これを基に設定ファイルやタグを見直します。
実行(本番削除)
確認後、本番で実行するには–forceを付けます。
aws-nuke -c nuke-config.yaml --profile your-profile --force
–forceを付けるとプロンプトをスキップして削除を開始します。取り消しはできません。
実行上の注意点
- 事前にアクセス権・プロファイルを確認してください。
- dry-runで想定外のリソースが無いか慎重に確認します。
- 削除は複数フェーズで進むことがあります。完了までログと対象アカウントを監視してください。
- 残存するリソースがあれば設定や依存関係を修正し、再実行する必要があります。
監視とログ確認
実行中は端末の出力とログを注意深く確認します。必要ならCloudTrailや各サービスのコンソールで削除状況を確認してください。
小さな運用のコツ
- テストアカウントで流れを検証してから本番で実行します。
- 定期的に設定ファイルを見直して不要なリスクを減らします。
運用上の注意点・失敗しやすいケース
概要
aws-nukeは強力なツールです。誤って重要なリソースを消すと復旧が難しくなるため、運用上の注意が不可欠です。特にOrganizationsで有効化したサービスはアカウント単位で削除できない点に注意してください。
除外設定は必須
Organizations単位で有効化されたサービス(例:IAM Identity Center/AWS SSOや組織単位で有効化したログなど)は、アカウント側から削除できません。必ずnuke-config.yamlで除外(excludes)やfiltersを設定して、該当アカウントやリソースを除外してください。
例(簡易):
accounts:
"123456789012":
filters:
IAMUser:
- "admin"
excludes:
- "arn:aws:s3:::company-shared-bucket"
削除可能リソースの確認
公式ドキュメントでaws-nukeが対応するリソース一覧を事前に確認してください。サービスの追加・変更で挙動が変わることがありますので、実行前に最新版を確認する習慣を付けましょう。
よくある失敗ケースと対策
- フィルタ不足で重要データを消してしまう。→ 小さなテストアカウントでdry-runを実行して構成を確認します。
- Organizations連携サービスを除外していない。→ 除外ルールをテンプレート化し全アカウントに適用します。
- 権限不足や一部リソースだけ残る。→ 実行ログをチェックし、残ったリソースの原因を調査します。
運用のヒント
- 最初は–no-dry-runを使わず、必ずドライランで確認します。
- 定期的にnuke-config.yamlを見直し、組織構成の変更に合わせて更新します。
- 共有バケットやアカウント管理者ユーザーは明示的に除外してください。
この章で挙げた注意点を守ると、運用トラブルを大幅に減らせます。
活用事例と運用ベストプラクティス
主な活用事例
- サンドボックスや開発アカウントの自動クリーンアップ
- 例:夜間に未使用のリソースを一括削除してコストを抑える。テスト環境を毎朝クリーンに戻す運用に向きます。
- リース期間終了時のリセット
- 例:学生やゲスト用アカウントの予約期間が終わったら、残存リソースを自動で削除します。
- 予算管理やガバナンスとの連携
- SCPや予算アラートと組み合わせ、不適切なリソース増加を防ぎます。
- 設定管理ツールと連携した除外リスト運用
- 例:AppConfigやパラメータストアで除外リストを管理し、運用フローで動的に変更します。
運用ベストプラクティス
- まずは dry-run を必ず実行する
- 影響範囲を把握してから実行します。
- タグベースやアカウント単位で対象を限定する
- 「environment=dev」などで誤削除を防ぎます。
- 重要リソースは明示的に除外する
- バックアップやネットワークなど、復旧困難なものを除外します。
- 自動化前にバックアップを確保する
- スナップショットやAMIを取得してください。
- 運用手順書と承認ワークフローを整備する
- 実行前の承認やロールバック手順を用意します。
- ログと通知を必ず組み込む
- CloudTrail や SNS による通知で監査可能にします。
- 段階的に導入する
- 最初は一部アカウントで試験運用し、問題がなければ拡大します。
- IAM と権限設計を厳格にする
- 最小権限のロールで実行する運用にしてください。
まとめ
aws-nukeはAWS上の不要リソースを効率的に削除し、サンドボックスや検証用アカウントのリセットを自動化する強力なツールです。柔軟な設定ファイルで対象を細かく指定でき、dry-runで実行前に影響を確認できます。除外リストを活用すれば、残すべきリソースを保護できます。
導入時のポイント
- まず検証用アカウントでdry-runを実行して動作を確認します。
- 最小権限のIAMユーザーで実行し、誤操作のリスクを下げます。
- 重要データは事前にバックアップやスナップショットを取得します。
運用上の注意
- 一度削除すると復元できないリソースがあります。設定ミスに注意してください。
- 自動実行する場合は承認フローやログ保存を組み込みます。
おすすめの使い方
サンドボックスの定期リセットや学習環境のクリーンアップに適しています。まずは小さな範囲で試し、設定と手順を運用ドキュメントにまとめてから本番的運用に移行してください。導入を検討している方は、dry-runと除外リストを使った安全な検証から始めることをおすすめします。












