はじめに
こんにちは、ほうき星 @H0ukiStar です。
AWS アカウントを作成すると、デフォルト VPC と呼ばれる VPC が各リージョンに 1 つずつ作成されます。
このデフォルト VPC はパブリックサブネットのみで構成されており、これらのサブネットでは EC2 起動時にパブリック IP アドレスが自動付与される設定になっています。マネジメントコンソールから EC2 インスタンスを起動する際にも、このデフォルト VPC が初期選択されるため、環境によっては意図しない構成でリソースを作成してしまう可能性があります。
そのため、組織のネットワーク設計上デフォルト VPC が不要な場合は、あらかじめ削除しておく運用を採るケースもあります。
今回は、AWS アカウントで利用可能な全リージョンに存在するデフォルト VPC を一括削除する CLI ツールを作成したので、その使い方をご紹介します。
デフォルト VPC を削除するツール:aws-default-vpc-cleaner
作成したツールは以下のレポジトリに置いています。
ツールの導入
Linux / Windows 向けのそれぞれのビルド成果物を Release に配置しています。
以下は CloudShell (Amazon Linux 2023) 上での導入例です。
$ wget https://github.com/H0ukiStar/aws-default-vpc-cleaner/releases/download/v1.0.0/aws-default-vpc-cleaner-v1.0.0-linux-x64
~省略~
2026-05-21 14:35:22 (29.2 MB/s) - ‘aws-default-vpc-cleaner-v1.0.0-linux-x64’ saved [34495320/34495320]
$ chmod +x aws-default-vpc-cleaner-v1.0.0-linux-x64
$
$ ./aws-default-vpc-cleaner-v1.0.0-linux-x64 --help
usage: aws-default-vpc-cleaner [-h] [--regions REGION [REGION ...]] [--dry-run] [--yes] [--lang {en,ja}] [--verbose] [--version]
Delete default VPCs and related resources across AWS regions
options:
-h, --help show this help message and exit
--regions REGION [REGION ...]
Specify target regions (default: all regions)
--dry-run List resources without deleting them
--yes, -y Skip confirmation prompts
--lang {en,ja} Language for output (en/ja)
--verbose, -v Enable verbose output
--version show program's version number and exit
Examples / 使用例:
# Delete default VPCs in all regions (with confirmation)
# 全リージョンのデフォルトVPCを削除 (確認あり)
aws-default-vpc-cleaner
# Delete default VPCs in specific regions
# 特定リージョンのデフォルトVPCを削除
aws-default-vpc-cleaner --regions us-east-1 us-west-2
# List default VPCs without deleting (dry-run)
# 削除せずにデフォルトVPCをリストアップ (ドライラン)
aws-default-vpc-cleaner --dry-run
# Delete without confirmation
# 確認なしで削除
aws-default-vpc-cleaner --yes
# Use Japanese language output
# 日本語出力を使用
aws-default-vpc-cleaner --lang ja
# Verbose output
# 詳細出力
aws-default-vpc-cleaner --verbose
ツールを利用したデフォルト VPC の削除
デフォルト VPC をいきなり削除する前に --dry-run オプションを利用して削除対象を確認しておきます。
以下のように利用可能なリージョンに存在するデフォルト VPC と各 VPC 上のインタネットゲートウェイやサブネットがリストアップされます。
$ ./aws-default-vpc-cleaner-v1.0.0-linux-x64 --dry-run --lang ja
AWS Default VPC Cleaner を起動しています...
ドライランモード - リソースは削除されません
利用可能なリージョンを取得中...
17個のリージョンが見つかりました
デフォルトVPCが見つかりました: vpc-07d832f4c0cf8328f
デフォルトVPCが見つかりました: vpc-018d9022ee1524a30
~省略~
リージョンを処理中: ap-south-1
削除対象 InternetGateway: igw-01f01b9e2459c6d19
削除対象 Subnet: subnet-048733e58a9b7d7e6
削除対象 Subnet: subnet-0dd665f8d05c327d7
削除対象 Subnet: subnet-0f7bb974902a49a1e
削除対象 VPC: vpc-07d832f4c0cf8328f
リージョン ap-south-1 の処理が完了しました
~省略~
=== サマリー ===
処理したリージョン: 17個
削除したVPC: 0個
削除したリソース: 0個
エラー: 0個
操作が正常に完了しました
削除対象に問題がなければ --dry-run オプション無しで実行することで以下のように削除されます。
~ $ ./aws-default-vpc-cleaner-v1.0.0-linux-x64 -yes --lang ja
AWS Default VPC Cleaner を起動しています...
利用可能なリージョンを取得中...
17個のリージョンが見つかりました
デフォルトVPCが見つかりました: vpc-07d832f4c0cf8328f
デフォルトVPCが見つかりました: vpc-018d9022ee1524a30
~省略~
リージョンを処理中: ap-south-1
InternetGateway を削除しました: igw-01f01b9e2459c6d19
Subnet を削除しました: subnet-048733e58a9b7d7e6
Subnet を削除しました: subnet-0dd665f8d05c327d7
Subnet を削除しました: subnet-0f7bb974902a49a1e
VPCを削除中: vpc-07d832f4c0cf8328f
VPCの削除に成功しました: vpc-07d832f4c0cf8328f
リージョン ap-south-1 の処理が完了しました
~省略~
=== サマリー ===
処理したリージョン: 17個
削除したVPC: 17個
削除したリソース: 89個
エラー: 0個
操作が正常に完了しました
用意しているオプション
--dry-run
ツールを利用した削除例でも示した通り、削除対象となるデフォルト VPC 等のリソースのリストアップを行い、削除は行わないオプションです。
いきなり削除を行うのではなく事前にリストアップを行い、削除対象のリソースが問題ないか確認しておくのが良いでしょう。
--yes
--yes を指定しない場合は、削除前に確認を行います。
--yes を指定した場合は、削除時の確認をスキップします。
--regions REGION [REGION ...]
デフォルト VPC を削除するリージョンを指定します。
指定しない場合は利用可能な全リージョンを対象にツールを実行します。
--lang {en,ja}
ツール実行時の出力を指定した言語にします。
--verbose
ツールの実行時に詳細を出力します。
さいごに
デフォルト VPC は AWS アカウント作成時に自動で作成される便利な仕組みですが、環境によっては不要なことも多く、複数リージョンにまたがると削除作業も煩雑になります。
今回作成した aws-default-vpc-cleaner は、そのようなデフォルト VPC を利用可能な全リージョンからまとめて確認・削除できるようにした CLI ツールです。
本ツールが、同じような課題を感じていた方の助けになれば幸いです。