ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

aws apigatewayv2 get-routing-rule 实战指南:查询 API Gateway 自定义域名的路由规则

2026/9/14 17:57:42 拓冰建站 浏览量
aws apigatewayv2 get-routing-rule 实战指南:查询 API Gateway 自定义域名的路由规则 aws apigatewayv2 get-routing-rule 实战指南查询 API Gateway 自定义域名的路由规则【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文以 aws-cli 内置的get-routing-rule官方示例为骨架完整讲解该命令的参数、输出结构及其在服务模型中的底层定义。读完本文你可以直接在 AWS API Gateway 中按域名与规则 ID 查询路由规则理解Actions、Conditions、Priority等输出字段的真实含义并掌握与create-routing-rule、put-routing-rule、list-routing-rules配套的完整路由规则管理流程。一、路由规则Routing Rule是什么API Gateway 的自定义域名Custom Domain Name上可以挂载多条路由规则。每条规则由两部分组成Conditions条件描述什么样的请求会命中该规则例如按请求 URI 的基础路径base path匹配Actions动作请求命中后要执行的动作当前模型中仅支持InvokeApi即把请求转发给某个 API 的某个 Stage。通过get-routing-rule你可以拉取某条路由规则的完整定义用于验证路由配置是否正确、排查自定义域名上请求转发不符合预期的问题。aws-cli 仓库中该操作的示例文档位于 get-routing-rule.rst。二、命令与完整示例get-routing-rule的用法是指定域名--domain-name和路由规则 ID--routing-rule-id即可取回该规则。仓库示例中的完整命令如下aws apigatewayv2 get-routing-rule \ --domain-name regional.example.com \ --routing-rule-id aaa111返回输出示例原文档中的完整返回体{ Actions: [ { InvokeApi: { ApiId: abcd1234, Stage: prod, StripBasePath: false } } ], Conditions: [ { MatchBasePaths: { AnyOf: [ PetStoreShopper ] } } ], Priority: 50, RoutingRuleArn: arn:aws:apigateway:us-east-2:123456789012:/domainnames/regional.example.com/routingrules/aaa111, RoutingRuleId: aaa111 }从返回体可以读出这条规则的语义凡是以基础路径PetStoreShopper开头的请求都会被转发到 APIabcd1234的prod阶段且不做基础路径剥离StripBasePath: false。三、参数详解结合 aws-cli 随附的 API Gateway V2 服务模型 service-2.jsonGetRoutingRuleRequest结构定义该命令的请求参数如下CLI 参数模型成员位置必填说明--domain-nameDomainNameURI 路径参数是要查询的自定义域名例如regional.example.com--routing-rule-idRoutingRuleIdURI 路径参数是路由规则 ID可在RoutingRuleArn或list-routing-rules的输出中获取--domain-name-idDomainNameId查询字符串参数否域名 IDDomainName与DomainNameId二选一即可定位域名模型中required字段明确列出RoutingRuleId和DomainName两个必填成员这也解释了为什么示例命令必须同时提供--domain-name和--routing-rule-id。四、输出字段逐项解析GetRoutingRuleResponse结构见 service-2.json定义了五个返回字段逐一对照上面示例输出Actions命中条件后执行的动作列表。模型文档说明“Only InvokeApi is supported”即列表中每个动作对象只会出现InvokeApi键其下包含ApiId目标 API 的 IDStage目标阶段Stage名称StripBasePath转发时是否剥离 URI 中的基础路径示例中为false即保留原始路径转发。Conditions规则匹配条件列表。示例中的MatchBasePaths.AnyOf表示只要请求的基础路径匹配数组中任意一个值即命中该结构是“匹配基础路径”这类条件的标准写法。Priority规则的求值优先级。模型文档明确写道“Priority is evaluated from the lowest value to the highest value”即 API Gateway按数值从小到大依次评估规则数值小的规则先被匹配命中即停止。示例中Priority: 50。RoutingRuleArn规则的资源 ARN格式为arn:aws:apigateway:region:account-id:/domainnames/domain-name/routingrules/routing-rule-id可用于 IAM 授权与资源引用。RoutingRuleId规则 ID与请求参数--routing-rule-id对应后续put-routing-rule更新、delete-routing-rule删除都需要用它。五、模型层的 API 行为HTTP 方法与错误码从服务模型看GetRoutingRule 操作定义该命令底层发起的 HTTP 请求为GET /v2/domainnames/{domainName}/routingrules/{routingRuleId}成功时返回 HTTP 200。模型同时声明了三种可能的错误对应到 CLI 执行时的报错场景错误类型含义常见触发场景NotFoundException请求中指定的资源不存在域名不存在或routing-rule-id在该域名下不存在BadRequestException请求参数无效参数缺失、格式非法TooManyRequestsException请求速率超限短时间内请求过于频繁触发限流因此在编写自动化脚本时建议对NotFoundException404单独处理以区分“规则不存在”和真正的网络/权限故障。六、配套操作路由规则的完整生命周期get-routing-rule通常不是孤立使用的。aws-cli 仓库在同一目录下提供了整套路由规则示例均位于 awscli/examples/apigatewayv2/ 目录与查询操作构成完整的 CRUD 流程创建create-routing-rule在域名上新建一条规则需指定--priority、--conditions、--actions详见 create-routing-rule.rstaws apigatewayv2 create-routing-rule \ --domain-name regional.example.com \ --priority 50 \ --conditions [ \ { \ MatchBasePaths: { \ AnyOf: [ \ PetStoreShopper \ ] \ } \ } \ ] \ --actions [ \ { \ InvokeApi: { \ ApiId: abcd1234, \ Stage: prod \ } \ } \ ]查询单条本文讲解的get-routing-rule按域名 规则 ID 精确取回一条规则。列出全部list-routing-rules列出某域名下的所有规则输出为包含RoutingRules数组的列表结构支持分页时携带NextToken详见 list-routing-rules.rst。实践中可以先用list-routing-rules获取RoutingRuleId再调用get-routing-rule查看单条详情。更新put-routing-rule按规则 ID 更新规则内容优先级、条件、动作注意它是整体替换语义更新时需要重新提交完整的--conditions与--actions详见 put-routing-rule.rstaws apigatewayv2 put-routing-rule \ --routing-rule-id aaa111 \ --domain-name regional.example.com \ --priority 150 \ --conditions [ { MatchBasePaths: { AnyOf: [ PetStoreShopper ] } } ] \ --actions [ { InvokeApi: { ApiId: abcd1234, Stage: prod } } ]示例把优先级从50调整为150说明通过get→ 修改 →put的流程可以安全地调整规则优先级。 5.删除delete-routing-rule按规则 ID 删除对应文件 delete-routing-rule.rst。七、使用建议与注意事项前提条件执行该命令需要有效的 AWS 凭证与 API Gateway 调用权限且目标域名与规则必须存在于当前凭证所在区域内--domain-name必须是已配置在 API Gateway 下的自定义域名如regional.example.com形式的区域域名。规则 ID 的获取RoutingRuleId可从list-routing-rules输出中读取也可以从任意规则的RoutingRuleArn末段解析得到示例中为aaa111。优先级排序方向再次强调Priority数值越小越先评估。调整规则顺序时put-routing-rule是唯一的修改入口。条件与动作的组合Conditions是数组、Actions也是数组但模型层面Actions仅支持InvokeApi条件方面MatchBasePaths使用AnyOf列表表达“任一匹配即命中”编写--conditionsJSON 时注意其为 JSON 数组字符串。排障顺序当自定义域名的流量没有按预期转发时建议先list-routing-rules确认规则是否存在再get-routing-rule核对Priority、Conditions与InvokeApi指向的 API/Stage 是否正确最后检查StripBasePath的设置是否符合后端路由要求。以上命令与输出均源自 aws-cli 仓库中apigatewayv2的官方示例与服务模型定义可直接作为脚本与自动化任务中的参照模板。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考