デフォルトVPCは消しておいたほうがいい!
- デフォルトVPCはCIDRの変更ができない
- 意図せずデフォルトVPCを利用した場合、パブリック公開になる
- 万が一デフォルトVPCが必要になった場合は、復活させることも可能
という訳で、消さない理由がない。
またAWS CLIを利用することで、全リージョンのデフォルトVPCをまとめて削除することが可能みたいなので、やってみよう。
1.AWS CloudShell を起動する
2.下記コマンドを実行する
aws --output text ec2 describe-regions --query "Regions[].[RegionName]" \
| while read region; do
aws --region ${region} --output text \
ec2 describe-vpcs --query "Vpcs[?IsDefault].[VpcId]" \
| while read vpc; do
echo "# deleting vpc: ${vpc} in ${region}"
### IGW
aws --region ${region} --output text \
ec2 describe-internet-gateways --filters Name=attachment.vpc-id,Values=${vpc} \
--query "InternetGateways[].[InternetGatewayId]" \
| while read igw; do
echo "## deleting igw: ${igw} in ${vpc}, ${region}"
echo "--> detatching"
aws --region ${region} --output json \
ec2 detach-internet-gateway --internet-gateway-id ${igw} --vpc-id ${vpc}
echo "--> deleteing"
aws --region ${region} --output json \
ec2 delete-internet-gateway --internet-gateway-id ${igw}
done
### Subnet
aws --region ${region} --output text \
ec2 describe-subnets --filters Name=vpc-id,Values=${vpc} \
--query "Subnets[].[SubnetId]" \
| while read subnet; do
echo "## deleting subnet: ${subnet} in ${vpc}, ${region}"
aws --region ${region} --output json \
ec2 delete-subnet --subnet-id ${subnet}
done
### VPC
echo "## finally, deleting vpc: ${vpc} in ${region}"
aws --region ${region} --output json \
ec2 delete-vpc --vpc-id ${vpc}
done
done
上記スクショのように複数行のペーストで警告文が出ても続行してOKです。
ペースト後Enterキーを押下すると、削除が実行されます。
※削除対象が多いため、少々時間がかかります。
3. 確認方法
EC2 Global View へアクセスすると、「リソースの概要」「リージョンあたりのリソース数」が表示されます。
確認したところ、2つだけ残ってました。
ap-northeast-1 は何かで利用してた気がしますが、ap-southeast-2 は一体…?
デフォルトVPCをGUIから削除する場合は、各VPCのアクションから削除を選択することで可能です。
確認用のチェックボックス・テキストフィールドを入力し、削除します。
普通に消えたので、CLIコマンドの処理順でキャンセルさせた…とかでしょうか?
※デフォルトVPCを復元したい場合は
下記コマンドを実行すればOKです。
aws --output text ec2 describe-regions --query "Regions[].[RegionName]" \
| while read region; do
echo "creating default VPC in ${region}"
aws --region ${region} ec2 create-default-vpc
done
実行すると、各リージョンにデフォルトVPCを作成します。
再度 EC2 Global View へアクセスすると、VPCの「17リージョンの17」と表示されており、全リージョンに作成されていることがわかります。
想像よりカジュアルにデフォルトVPCの削除・復元ができたのでよかったです。
参考文献