
AWS CLI 实战使用 appmesh delete-route 命令删除 App Mesh 路由【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本篇基于 aws-cli 仓库中的 App Mesh 示例文档 delete-route.rst讲解如何使用aws appmesh delete-route命令删除一条 App Mesh 路由包括完整命令语法、三个必需参数与可选的--mesh-owner参数、返回结果中每个字段的含义以及如何结合服务模型文件service-2.json理解该操作的底层 HTTP 请求、错误码与幂等性。读完本文你可以独立完成路由删除操作、正确解读删除回执并在删除前后用describe-route、list-routes等命令完成状态核验。一、delete-route 命令示例仓库示例文档给出的标准用法如下删除指定网格、虚拟路由器下的指定路由。aws appmesh delete-route \ --mesh-name app1 \ --virtual-router-name vrServiceB \ --route-name toVnServiceB-weighted三个参数共同构成路由的全局定位参数示例值说明--mesh-nameapp1路由所在的服务网格名称必填--virtual-router-namevrServiceB路由所在的虚拟路由器名称必填--route-nametoVnServiceB-weighted要删除的路由名称必填从服务模型定义DeleteRouteInput 形状可以看到meshName、routeName、virtualRouterName三者被标记为required且均映射到 HTTP 请求的 URI 路径参数此外还有一个可选参数meshOwner--mesh-owner网格所有者的 AWS IAM 账号 ID。当被删除的路由位于其他账号共享给你的网格中时需要填写对方的账号 ID若网格属于本账号则无需填写。该参数位于查询字符串locationName: meshOwner中不进入 URI 路径。三个名称参数在模型中对应的形状为ResourceName约束为1255 个字符的字符串命名时需注意此长度上限。二、解析删除操作的返回结果执行delete-route后CLI 会打印被删除路由的完整对象模型中该响应形状为DeleteRouteOutput其中route成员是必填字段类型为RouteData即“describe 操作返回的路由对象”。示例输出如下{ route: { meshName: app1, metadata: { arn: arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualRouter/vrServiceB/route/toVnServiceB-weighted, createdAt: 1563811384.015, lastUpdatedAt: 1563823915.936, uid: a1b2c3d4-5678-90ab-cdef-11111EXAMPLE, version: 3 }, routeName: toVnServiceB-weighted, spec: { httpRoute: { action: { weightedTargets: [ { virtualNode: vnServiceBv1, weight: 80 }, { virtualNode: vnServiceBv2, weight: 20 } ] }, match: { prefix: / } } }, status: { status: DELETED }, virtualRouterName: vrServiceB } }RouteData对象的必填成员为meshName、metadata、routeName、spec、status、virtualRouterName各字段含义meshName/virtualRouterName/routeName与请求参数一致可用于确认删除的是目标资源metadata路由元数据。arn给出资源在网格层级路径mesh/app1/virtualRouter/vrServiceB/route/toVnServiceB-weighted下的完整 ARNcreatedAt/lastUpdatedAt为 Unix 时间戳uid是资源唯一标识version为资源版本号示例中为 3说明该路由此前已被更新过spec被删除路由的完整规格。本例是一条httpRoutematch.prefix为/action.weightedTargets定义了两个带权重的虚拟节点目标vnServiceBv180与vnServiceBv220status删除后的状态。示例中为DELETED这是确认删除生效的关键标志。三、底层调用链与错误处理从服务模型的DeleteRoute操作定义可以看出appmesh 2019-01-25 service-2.jsonCLI 命令最终发出的请求为DELETE /v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}成功时响应码为 200。操作标记为idempotent: true即重复执行同一删除请求是幂等的对已删除资源再次请求不会产生副作用但可能返回NotFoundException。该操作可能抛出的异常在模型中显式枚举排查故障时可对照异常含义提示NotFoundException网格、虚拟路由器或路由名称不存在BadRequestException请求参数不合法TooManyRequestsException请求过于频繁被限流ForbiddenException当前凭证无删除权限ResourceInUseException资源被其他资源引用而无法删除ServiceUnavailableException/InternalServerErrorException服务端暂不可用或内部错误aws-cli 仓库本身没有为 App Mesh 编写定制化代码awscli/customizations/目录下无 appmesh 子目录从仓库结构可以推断该服务的 CLI 行为完全由 botocore 服务模型数据驱动因此本文命令语法、参数取值范围与错误清单均以 awscli/botocore/data/appmesh/2019-01-25/ 下的模型文件为准适用于使用 2019-01-25 API 版本的 aws-cli。四、删除前后的验证与相关操作删除路由前建议先用describe-route确认路由存在并留存当前规格仓库中已有对应示例 describe-route.rstaws appmesh describe-route \ --mesh-name app1 \ --virtual-router-name vrServiceB \ --route-name toVnServiceB-weighted注意describe-route的示例输出中status.status为ACTIVE与delete-route返回的DELETED形成状态对照同时其metadata.version与lastUpdatedAt在删除前后也会发生变化可用于确认删除请求确实作用于最新版本。其他可用于上下文管理的路由操作示例同样位于 awscli/examples/appmesh/ 目录list-routes.rst列出虚拟路由器下的路由适合在删除前做盘点create-route.rst创建路由删除后重建时使用update-route.rst更新路由规格调整权重时优先用更新而非删除重建以避免短暂的路由缺失窗口delete-virtual-router.rst删除虚拟路由器路由隶属于虚拟路由器删除路由器的典型前置操作就是先删除其下的路由。五、要点小结aws appmesh delete-route通过--mesh-name、--virtual-router-name、--route-name三个必填参数定位目标路由跨账号共享网格场景下追加--mesh-owner命令底层是幂等的DELETEREST 调用成功返回200响应体携带被删除路由的完整RouteData其中status.status DELETED是删除成功的判定依据排查失败时应优先核对NotFoundException名称错误与ResourceInUseException资源仍被引用两类错误生产环境建议遵循“先describe-route/list-routes核验再删除删除后再次确认”的流程避免误删仍在承载流量的路由。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考