使用路由规则重新创建 API 映射
可以使用路由规则重新创建 API 映射。要重新创建 API 映射,请确保开启基本路径删除。这将保留 API 映射的行为。有关更多信息,请参阅 使用基本路径条件删除基本路径。
以下教程展示了如何将 API 映射 https://
重新创建为路由规则,以及如何更新访问日志以记录 API Gateway 用于向 API 发送流量的路由规则 ID。api.example.com
/orders/v2/items/categories/5
- Amazon Web Services Management Console
-
将路由模式设置为 ROUTING_RULE_THEN_API_MAPPING
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 从主导航窗格中选择自定义域名。
-
选择自定义域名。
-
对于域详细信息,选择编辑。
-
对于路由模式,请选择 ROUTING_RULE_THEN_API_MAPPING。
-
选择保存
设置路由模式后,可以创建路由规则。
创建路由规则
-
在路由详情选项卡上,选择添加路由规则。
-
选择添加新条件,然后选择路径。
-
对于路径,输入
orders/v2/items/categories/5
。 -
对于删除基本路径,选择活动。
对于目标 API,请选择目标 API。
对于目标阶段,选择目标阶段。
-
选择下一步。
-
对于优先级,请输入优先级。
即使您保留现有的 API 映射,API Gateway 也将始终使用新的路由规则,因为路由规则始终优先于 API 映射。
选择保存更改。
创建路由规则后,更新阶段的访问日志格式或创建新日志,以确认 API Gateway 使用路由规则来将流量发送到 API。
更新访问日志
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 选择 API。
在主导航窗格中,选择阶段。
对于日志和跟踪,选择编辑。
如果您没有日志组,请参阅为 API Gateway 中的 REST API 设置 CloudWatch 日志记录。
将
$context.customDomain.routingRuleIdMatched
添加到您的日志格式。此日志组记录 API Gateway 用来向 API 发送流量的路由规则 ID。有关更多信息,请参阅 我不知道 API Gateway 是如何将流量发送到 API 的。
选择 Save。
更新访问日志后,调用自定义域名。以下是一个示例 curl 命令,用于调用基本路径为
orders/v2/items/categories/5
的自定义域名https://
。api.example.com
curl "https://
api.example.com
/orders/v2/items/categories/5"成功调用自定义域名后,请确认 CloudWatch Logs 显示
routingRuleIdMatched
。要了解如何使用 CloudWatch Logs 控制台来查看日志组,请参阅在 CloudWatch 控制台中查看 API Gateway 日志事件。 - Amazon CLI
-
-
使用以下 update-domain-name 命令更新域名
以使用路由模式api.example.com
ROUTING_RULE_THEN_API_MAPPING
。aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
使用以下 create-routing-rule 命令创建新的路由规则,以重新创建 API 映射
https://
。api.example.com
/orders/v2/items/categories/5aws apigatewayv2 create-routing-rule \ --domain-name '
api.example.com
' \ --priority 50 \ --conditions '[ { "MatchBasePaths": { "AnyOf": [ "orders/v2/items/categories/5" ] } } ]' \ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": true } } ]' -
使用以下 update-stage 命令更新访问日志格式以包含
$context.customDomain.routingRuleIdMatched
变量。此变量记录 API Gateway 用来向 API 发送流量的路由规则 ID。可以使用此日志来确认 API Gateway 是否使用路由规则将流量发送到 API。有关更多信息,请参阅 我不知道 API Gateway 是如何将流量发送到 API 的。aws apigateway update-stage \ --rest-api-id
a1bc2c3
\ --stage-name prod \ --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"如果您没有日志组,请参阅为 API Gateway 中的 REST API 设置 CloudWatch 日志记录。
-
使用以下示例 curl 命令来调用基本路径为
orders/v2/items/categories/5
的自定义域名。curl "https://
api.example.com
/orders/v2/items/categories/5 -
使用以下 filter-log-events 命令,来从日志组
access-log-group-orders
中获取包含路由规则 IDabc123
的日志事件。aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
这确认 API Gateway 已使用路由规则向 API 发送流量。
-