最近忘了把vpc 删干净导致又被收了冤大头钱
在删除vpc 的收发现又eni在使用,但是忘了是哪个资源在占用
先用命令行把占用的资源找出来停掉
使用 AWS 命令行界面(CLI)来查看 VPC 的使用情况
-
列出子网:
aws ec2 describe-subnets --filters "Name=vpc-id,Values=<your-vpc-id>"
-
列出安全组:
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<your-vpc-id>"
-
列出网络接口:
aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>"
添加下面脚本彻底删除所有vpc资源
#!/bin/bash
# 设置要删除的网络接口 ID
ENI_ID="eni-0650500227c9ffa7a"
# 函数:检查并解除与 ENI 关联的实例
terminate_instances() {
echo "查找与 ENI 关联的实例..."
INSTANCE_IDS=$(aws ec2 describe-instances --filters "Name=network-interface.id,Values=$ENI_ID" --query "Reservations[].Instances[].InstanceId" --output text)
if [ -n "$INSTANCE_IDS" ]; then
echo "终止以下实例: $INSTANCE_IDS"
aws ec2 terminate-instances --instance-ids $INSTANCE_IDS
echo "正在等待实例终止..."
aws ec2 wait instance-terminated --instance-ids $INSTANCE_IDS
else
echo "没有找到与 ENI 关联的实例。"
fi
}
# 函数:解除与 ENI 关联的弹性 IP
disassociate_elastic_ips() {
echo "解除与 ENI 关联的弹性 IP..."
ALLOC_IDS=$(aws ec2 describe-addresses --filters "Name=network-interface-id,Values=$ENI_ID" --query "Addresses[].AllocationId" --output text)
for ALLOC_ID in $ALLOC_IDS; do
echo "解除弹性 IP: $ALLOC_ID"
aws ec2 disassociate-address --allocation-id $ALLOC_ID
done
}
# 函数:查找并处理与 ENI 关联的负载均衡器
detach_from_load_balancers() {
echo "查找与 ENI 关联的负载均衡器..."
LOAD_BALANCERS=$(aws elbv2 describe-load-balancers --query "LoadBalancers[?contains(NetworkInterfaces[].NetworkInterfaceId, '$ENI_ID')].LoadBalancerArn" --output text)
if [ -n "$LOAD_BALANCERS" ]; then
echo "找到关联的负载均衡器: $LOAD_BALANCERS"
for LB in $LOAD_BALANCERS; do
# 这里需要根据负载均衡器的类型和配置来具体实现
echo "请手动从负载均衡器 $LB 中移除网络接口。"
done
else
echo "没有找到与 ENI 关联的负载均衡器。"
fi
}
# 函数:删除网络接口
delete_network_interface() {
echo "删除网络接口 $ENI_ID..."
aws ec2 delete-network-interface --network-interface-id $ENI_ID
if [ $? -eq 0 ]; then
echo "网络接口 $ENI_ID 删除完成。"
else
echo "删除网络接口时发生错误。请检查是否还有其他依赖。"
fi
}
# 主程序
terminate_instances
disassociate_elastic_ips
detach_from_load_balancers
delete_network_interface