最近忘了把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" ]; thenecho "终止以下实例: $INSTANCE_IDS"aws ec2 terminate-instances --instance-ids $INSTANCE_IDSecho "正在等待实例终止..."aws ec2 wait instance-terminated --instance-ids $INSTANCE_IDSelseecho "没有找到与 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; doecho "解除弹性 IP: $ALLOC_ID"aws ec2 disassociate-address --allocation-id $ALLOC_IDdone
}# 函数:查找并处理与 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" ]; thenecho "找到关联的负载均衡器: $LOAD_BALANCERS"for LB in $LOAD_BALANCERS; do# 这里需要根据负载均衡器的类型和配置来具体实现echo "请手动从负载均衡器 $LB 中移除网络接口。"doneelseecho "没有找到与 ENI 关联的负载均衡器。"fi
}# 函数:删除网络接口
delete_network_interface() {echo "删除网络接口 $ENI_ID..."aws ec2 delete-network-interface --network-interface-id $ENI_IDif [ $? -eq 0 ]; thenecho "网络接口 $ENI_ID 删除完成。"elseecho "删除网络接口时发生错误。请检查是否还有其他依赖。"fi
}# 主程序
terminate_instances
disassociate_elastic_ips
detach_from_load_balancers
delete_network_interface