AWS CLI App Mesh 实战:用 list-meshes 列出服务网格及其底层 API 机制解析 AWS CLI App Mesh 实战用 list-meshes 列出服务网格及其底层 API 机制解析【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文以 AWS CLI 仓库中 AWS App Mesh 的官方示例 list-meshes.rst 为核心完整讲解aws appmesh list-meshes命令的用法、输出字段含义、分页参数--limit/--next-token/--page-size并结合仓库中内嵌的 App Mesh 服务模型文件剖析该命令背后的 HTTP 端点、请求参数序列化方式与错误码定义帮助你既会用它、也懂它的工作原理。1. 基本用法列出当前 Region 下的所有服务网格示例文档给出的标准用法只有一行命令列出当前 AWS Region 内所有的 App Mesh 服务网格。aws appmesh list-meshes命令执行后App Mesh 服务返回一个包含meshes数组的 JSON 对象。示例文档中给出的输出样例如下{ meshes: [ { arn: arn:aws:appmesh:us-east-1:123456789012:mesh/app1, meshName: app1 } ] }从输出结构可以看出两个关键点命令是无参的只读操作。list-meshes不需要任何必填参数执行前提是当前 CLI 会话已配置好有效的 AWS 凭证与 Region示例输出中的us-east-1即当前生效的 Region。每条网格记录至少包含arn与meshName两个核心字段。arn遵循 App Mesh 的 ARN 格式arn:aws:appmesh:region:account-id:mesh/mesh-name可直接用于后续的get-mesh、update-mesh、delete-mesh等操作meshName则是同 Region 内唯一的网格名称。需要说明的是示例文档中的输出做了展示上的精简。从仓库内嵌的 API 模型 service-2.json 定义的MeshRef结构看meshes数组中的每个元素是一个包含 7 个必填字段的对象arn、createdAt、lastUpdatedAt、meshName、meshOwner、resourceOwner、version。其中createdAt与lastUpdatedAt为 Unix 纪元时间戳秒meshOwner/resourceOwner是网格所有者的 IAM 账号 ID如果不是你自己的账号即为共享该网格的账号用于 App Mesh 的跨账号网格共享场景version从 1 开始、每次更新递增。实际执行时这些字段都会随响应一并返回。2. 请求背后的 API 端点与参数aws appmesh list-meshes是 App Mesh API 中ListMeshes操作的 CLI 映射。根据 service-2.json 中的操作定义HTTP 方法与 URIGET /v20190125/meshes成功时响应码为 200输入结构ListMeshesInput输出结构ListMeshesOutput操作语义模型中的文档描述即为“Returns a list of existing service meshes.”与示例文档标题“list all of the service meshes in the current AWS Region”完全一致。2.1 输入参数--limit与--next-token从 service-2.json 定义的ListMeshesInput结构看list-meshes支持两个可选参数二者都以 query string 形式附加到请求 URI 上CLI 参数模型中的字段类型/取值说明--limitlimitshape 为ListMeshesLimit整数1100单页返回的最大结果数。使用时ListMeshes只返回limit条结果外加一个nextToken响应元素不使用时默认最多返回 100 条--next-tokennextToken字符串不透明标识符上一次分页请求返回的令牌用于从上次中断处继续拉取。官方文档明确提示该令牌应视为仅用于翻页的不透明标识不要作其他程序化用途limit的取值范围在 service-2.json 的ListMeshesLimitshape 中被显式约束为min: 1、max: 100。因此当 Region 内网格数量较多时可以显式控制单次拉取量aws appmesh list-meshes --limit 20若响应中出现nextToken字段则携带它继续拉取下一页aws appmesh list-meshes --limit 20 --next-token 上次响应中的nextToken值2.2 输出结构meshes与nextTokenListMeshesOutputservice-2.json的定义meshes必填MeshList类型现有服务网格的列表成员为上文所述的MeshRefnextToken可选字符串用于下一次ListMeshes请求的翻页令牌。当结果超出limit时该字段有值没有更多结果时为null即不返回该字段也就是第 1 节示例输出中没有nextToken的原因。2.3 声明式分页--page-size除了手动传递nextToken之外AWS CLI 还基于分页器配置提供了声明式分页能力。仓库中的分页器定义文件 paginators-1.json 为ListMeshes注册了完整的分页配置ListMeshes: { input_token: nextToken, limit_key: limit, output_token: nextToken, result_key: meshes }四项配置分别对应请求参数nextTokeninput_token、每页大小参数limitlimit_key、响应中的翻页令牌nextTokenoutput_token以及结果所在字段meshesresult_key。正因为有这份配置aws appmesh list-meshes可以使用--page-size自动完成多页拉取# 每页 10 条CLI 自动翻页并逐页输出所有 mesh aws appmesh list-meshes --page-size 10这是 App Mesh 分页器中注册的 8 个 List 操作之一其余 7 个ListRoutes、ListVirtualNodes、ListVirtualRouters、ListVirtualServices、ListTagsForResource、ListGatewayRoutes、ListVirtualGateways在 paginators-1.json 中采用了完全一致的四元组模式配置方式与list-meshes完全相同。3. 错误处理可能遇到的服务异常ListMeshes操作在 service-2.json 中声明了 6 类可能的异常异常典型触发场景NotFoundException请求的目标资源如所属网格/命名空间不存在BadRequestException请求参数格式非法或不满足校验TooManyRequestsException请求频率超过服务限流阈值ForbiddenException当前凭证缺少 App Mesh 相应权限或无访问资格ServiceUnavailableException服务端暂时不可用InternalServerErrorException服务端内部错误对list-meshes这类只读列表操作而言最常见的失败是ForbiddenException凭证权限不足与TooManyRequestsException高频轮询触发限流。CLI 遇到非 2xx 响应时会按该异常结构解析错误体并输出对应的错误类型便于脚本中做条件分支处理。4. 典型后续操作list-meshes通常作为“发现资源”的第一步拿到网格名称或 ARN 后衔接其他命令例如查看某个网格的完整规格与状态对应模型中的GetMesh操作需要meshName必填参数# 列出网格提取名称后查看详情 aws appmesh list-meshes aws appmesh get-mesh --mesh-name app1也可以直接用--query做字段投影让输出更贴近脚本消费需求aws appmesh list-meshes --query meshes[].{name:meshName,arn:arn,updated:lastUpdatedAt} --output table5. 小结与参考资料list-meshes.rst本篇所依据的官方示例文档给出了aws appmesh list-meshes的最小命令与示例输出service-2.jsonApp Mesh 2019-01-25 版本的服务模型定义了ListMeshes的 HTTP 端点GET /v20190125/meshes、输入/输出结构、limit的 1100 取值约束、MeshRef的 7 个必填字段及异常清单paginators-1.jsonListMeshes的分页器配置支撑--page-size声明式分页仓库同时保留 2018-10-01 版本的服务模型两个版本均可通过 CLI 的 API 版本选择机制使用本文以当前默认的 2019-01-25 版本为准关于 App Mesh 服务网格概念与共享网格的权威说明可参考 AWS App Mesh User Guide示例文档末尾的 “Service Meshes” 章节指引。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考