AWS CLI 实战:使用 apigatewayv2 delete-vpc-link 删除 HTTP API 的 VPC 链接
2026/9/14 17:36:33 网站建设 项目流程

AWS CLI 实战:使用 apigatewayv2 delete-vpc-link 删除 HTTP API 的 VPC 链接

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

本指南以 AWS CLI 官方示例库中的 delete-vpc-link.rst 为骨架,系统讲解如何通过aws apigatewayv2 delete-vpc-link命令删除 HTTP API 的 VPC link,并结合当前仓库中的配套示例(create / get / update)与底层 API 模型(service-2.json),带你走完 VPC link 从创建、查询、更新到删除的完整生命周期,并理解删除操作在协议层的真实语义。

命令概览:一条命令删除 VPC link

VPC link 是 API Gateway 与用户在 VPC 中部署的私有资源(如 ELB、ALB、NLB)之间建立私密连接的通道。当某个 HTTP API 的集成不再需要使用 VPC 内的私有端点时,就可以用delete-vpc-link将其删除。仓库中的官方示例给出了最简用法:

aws apigatewayv2 delete-vpc-link \ --vpc-link-id abcd123
  • --vpc-link-id:必填参数,指定要删除的 VPC link 的唯一 ID,即创建时返回的VpcLinkId
  • 命令执行成功后不产生任何标准输出(This command produces no output),这与该命令的响应模型完全吻合(详见下文"删除操作在协议层如何工作"一节)。

参数详解:唯一必填参数 VpcLinkId

从 API 模型看,DeleteVpcLink操作的请求结构定义在 service-2.json 的 DeleteVpcLinkRequest 中:

"DeleteVpcLinkRequest": { "type": "structure", "members": { "VpcLinkId": { "shape": "__string", "location": "uri", "locationName": "vpcLinkId", "documentation": "<p>The ID of the VPC link.</p>" } }, "required": ["VpcLinkId"] }

关键信息如下:

字段位置必填说明
vpc-link-idURI 路径(location: "uri"locationName: "vpcLinkId"要删除的 VPC link ID

注意locationuri意味着该参数不是以请求体(JSON body)提交,而是拼接进请求路径,最终请求对应DELETE /v2/vpclinks/{vpcLinkId}。这也是为什么在 AWS CLI 命令行上必须显式传入--vpc-link-id,因为它是该操作唯一的入参。

完整实战:VPC link 生命周期四步走

为了让删除命令在真实环境中有的放矢,这里串联仓库中与 VPC link 相关的全部官方示例,展示完整生命周期。

第一步:创建 VPC link

参考 create-vpc-link.rst,创建时至少要提供名称、子网列表,并可指定安全组:

aws apigatewayv2 create-vpc-link \ --name MyVpcLink \ --subnet-ids subnet-aaaa subnet-bbbb \ --security-group-ids sg1234 sg5678

返回结果(示例输出):

{ "CreatedDate": "2020-04-07T00:11:46Z", "Name": "MyVpcLink", "SecurityGroupIds": ["sg1234", "sg5678"], "SubnetIds": ["subnet-aaaa", "subnet-bbbb"], "Tags": {}, "VpcLinkId": "abcd123", "VpcLinkStatus": "PENDING", "VpcLinkStatusMessage": "VPC link is provisioning ENIs", "VpcLinkVersion": "V2" }

VpcLinkId(示例中的abcd123)就是后续删除命令需要使用的值。

第二步:查询确认目标

删除前建议先用 get-vpc-links.rst 或get-vpc-link核对 ID 与状态:

aws apigatewayv2 get-vpc-links

从示例输出可以看到 VPC link 进入可用状态后的特征:"VpcLinkStatus": "AVAILABLE""VpcLinkStatusMessage": "VPC link is ready to route traffic"。根据 service-2.json 的 VpcLinkStatus 枚举,状态共有PENDINGAVAILABLEDELETINGFAILEDINACTIVE五种,其中DELETING即删除流程进行中的状态。

第三步:更新(可选)

如果只是改名而不打算删除,可参考 update-vpc-link.rst:

aws apigatewayv2 update-vpc-link \ --vpc-link-id abcd123 \ --name MyUpdatedVpcLink

该示例明确提示:创建完成后,VPC link 的安全组与子网无法再修改,只能更新名称等字段。

第四步:删除

aws apigatewayv2 delete-vpc-link \ --vpc-link-id abcd123

删除成功后无输出;若再次执行get-vpc-links,该链接将不再出现在列表中。

删除操作在协议层如何工作

从源码结构看,DeleteVpcLink在 service-2.json 中的定义揭示了三个值得注意的实现细节:

"DeleteVpcLink": { "name": "DeleteVpcLink", "http": { "method": "DELETE", "requestUri": "/v2/vpclinks/{vpcLinkId}", "responseCode": 202 }, "input": { "shape": "DeleteVpcLinkRequest" }, "output": { "shape": "DeleteVpcLinkResponse", "documentation": "<p>202 response</p>" }, "errors": [ { "shape": "NotFoundException", "documentation": "<p>The resource specified in the request was not found.</p>" }, { "shape": "TooManyRequestsException", "documentation": "<p>The client is sending more than the allowed number of requests per unit of time.</p>" } ], "documentation": "<p>Deletes a VPC link.</p>" }
  1. HTTP 方法与路径:底层走DELETE /v2/vpclinks/{vpcLinkId},是标准 RESTful 资源删除。
  2. 异步语义(202 Accepted):成功响应码是202而非200/204,表明删除是被接受处理的异步操作,而非立即完成的同步删除。这解释了为什么 VPC link 状态枚举中存在DELETING状态——服务端接受删除请求后,需要异步释放其背后的弹性网络接口(ENI)等资源,期间链接会处于删除中状态,之后才会从查询结果中消失。
  3. 空响应体DeleteVpcLinkResponse在 service-2.json 中定义为"members": {}的空结构。这正是官方示例中"命令不产生输出"的直接原因——响应模型本身没有任何可序列化的字段。

常见错误与排障

根据DeleteVpcLink的错误定义,该操作可能抛出两类异常,CLI 会以非零退出码与 stderr 错误消息呈现:

异常触发场景排查建议
NotFoundException传入的vpc-link-id不存在、已被删除或不属于当前账户aws apigatewayv2 get-vpc-links复核 ID 拼写与所属区域
TooManyRequestsException单位时间内请求数超过 API Gateway 的调用限制采用指数退避重试,或降低调用频率

另外,从 API 模型看,该操作没有声明BadRequestException(不同于CreateVpcLink),说明除上述两类异常外,入参层面的校验失败主要以NotFoundException形式呈现(例如指向不存在的 ID)。若删除操作始终失败,建议配合 CloudTrail 中的DeleteVpcLink事件审计调用来源与错误码。

小结

aws apigatewayv2 delete-vpc-link --vpc-link-id <id>是一个参数极少、行为明确的管理类命令:只接受唯一的--vpc-link-id参数,走DELETE /v2/vpclinks/{vpcLinkId}协议,以202异步接受删除并以空响应返回。结合仓库中的 create-vpc-link.rst、get-vpc-links.rst 与 update-vpc-link.rst,你可以安全地完成 VPC link 从创建到销毁的闭环管理。在自动化脚本(如 CI/CD 清理流程)中,可先通过get-vpc-links解析出目标VpcLinkId,再循环调用删除命令,并结合返回码判断是否真正清理成功。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询