在尝试删除我的 Amazon VPC 时,我收到了一条依赖项错误。如何删除我的 Amazon VPC?

上次更新日期:2022 年 7 月 26 日

当我尝试删除我的 Amazon Virtual Private Cloud(Amazon VPC)时收到依赖关系错误。如何删除?

简短描述

当您删除 Amazon VPC 时,也会删除其所有组件。这些组件可以包括子网、安全组、网络访问控制列表(网络 ACL)、路由表、互联网网关和 DHCP 选项。但是,如果您在尝试删除 Amazon VPC 之前没有删除依赖资源,则会收到依赖关系错误。

解决方法

在删除 VPC 之前,您必须删除依赖资源。

您可以使用 AWS 命令行界面(AWS CLI)delete-vpc 命令或 Amazon VPC 控制台来删除 Amazon VPC。

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

解决通过 AWS CLI 尝试删除 Amazon VPC 时收到的错误

以下错误表示您必须先删除依赖关系,然后才能删除 Amazon VPC:

“An error occurred (DependencyViolation) when calling the DeleteVpc operation: The vpc 'vpc-id' has dependencies and cannot be deleted(调用 DeleteVpc 操作时发生错误 (DependencyViolation):vpc“vpc-id”有依赖关系,无法删除)”。

要解决此错误:

1.    运行以下脚本,查找剩余的依赖关系:

#!/bin/bash
vpc="vpc-xxxxxxxxxxxxx" 
region="yy-yyyy-y"
aws ec2 describe-vpc-peering-connections --region $region --filters 'Name=requester-vpc-info.vpc-id,Values='$vpc | grep VpcPeeringConnectionId
aws ec2 describe-nat-gateways --region $region --filter 'Name=vpc-id,Values='$vpc | grep NatGatewayId
aws ec2 describe-instances --region $region --filters 'Name=vpc-id,Values='$vpc | grep InstanceId
aws ec2 describe-vpn-gateways --region $region --filters 'Name=attachment.vpc-id,Values='$vpc | grep VpnGatewayId
aws ec2 describe-network-interfaces --region $region --filters 'Name=vpc-id,Values='$vpc | grep NetworkInterfaceId

注意:在上面的脚本中,在 vpc 字段中输入您的 VPC ID,在 Region(区域)字段中输入 AWS 区域(例如 us-east-1)。另外,请确保使用有相应权限的凭证来运行 Describe API 调用。

2.    删除您在步骤 1 中确定的剩余依赖关系,然后重新尝试删除您的 Amazon VPC。

解决通过 Amazon VPC 控制台尝试删除 Amazon VPC 时收到的错误

以下错误表明,Amazon VPC 上运行有 Amazon Elastic Compute Cloud(Amazon EC2)实例:“VPC contains one or more instances, and cannot be deleted until those instances have been terminated(VPC 包含一个或多个实例,在终止这些实例之前,无法删除 VPC)”。 要解决此错误,请终止您的实例

以下错误表明,Amazon VPC 有在用的或可用的网络接口:“VPC contains one or more in-use network interfaces, and cannot be deleted until those network interfaces have been deleted(VPC 包含一个或多个使用中的网络接口,在删除这些网络接口之前,无法删除 VPC)”。

以下错误表明,存在无法删除的请求者托管的网络接口:“An error occurred (InvalidParameterValue) when calling the DeleteNetworkInterface operation: Network interface 'eni-aabbccdd' is currently in use(调用 DeleteNetworkInterface 操作时出错(InvalidParameterValue):网络接口“eni-aabbccdd”当前正在使用中)”。 要删除请求者托管的网络接口,您必须删除创建网络接口的 AWS 服务。

请按照以下步骤删除依赖服务:

  1. 打开 Amazon EC2 控制台
  2. 选择 Amazon VPC 所在的 AWS 区域。
  3. 在导航窗格中的 Network Interfaces(网络接口)下,搜索您正在删除的 Amazon VPC 的 VPC ID。
  4. 选择网络接口,然后选择 Details(详细信息)选项卡。
  5. 查看 Description(描述),以查看网络接口附加到的资源。
  6. 删除关联的资源。例如,如果您要删除网络接口且请求者 ID 为“amazon-elb”,请使用弹性网络接口 Description(描述)字段中的值来标识弹性负载均衡器。然后,导航到 Amazon EC2 管理控制台的 Load Balancer(负载均衡器)部分,找到该负载均衡器,然后删除它。

注意:如果该网络接口是主网络接口,则删除实例时会删除此接口。

以下错误表明,Amazon VPC 有依赖关系:“VPC has one or more attached NAT gateways or virtual private gateways, and cannot be deleted until they are detached or deleted(VPC 有一个或多个已连接的 NAT 网关或虚拟私有网关,在分离或删除它们之前不能删除 VPC)”。 要删除它们,请执行以下步骤:删除 NAT 网关以及分离并删除虚拟专用网关

以下错误表明,Amazon VPC 中存在活动的 VPC 对等连接:“The VPC is peered as a requester with at least one other VPC through peering connections(VPC 作为请求者通过对等连接与至少一个其他 VPC 进行对等连接)”。要删除它们,请执行以下步骤:删除 VPC 对等连接