2

我正在使用 AWS HTTP API Gateway 将请求路由到我在 VPC 中的集成。

我添加了一个自定义域,我想通过以下方式根据路径将我的请求路由到我的集成

基于路径的路由

基本上所有到达 API 网关的请求都应该根据基本路径路由到不同的集成,但集成应该只接收基本路径之后的路径。因此,所有到达 my.custom.domain/foo/<path1>/<path2>/<path3> 的请求都应该路由到集成Foo但网关应该剥离基本路径,即 /foo 并将其余的转发到集成.

功能与以下 nginx 中的相同,其中 nginx 从请求路径中剥离 foo 并将其余部分转发给服务

location /foo/ {
  proxy_pass http://foo.service
}

我尝试在 AWS API 网关中添加自定义域和 API 映射,但这不起作用。我的服务仍然从请求中接收整个路径,因此失败。我无法在互联网上找到有关此的任何文档或提及。

4

1 回答 1

1

您可以使用路由和参数映射来实现此目的。

使用 2 个路径映射创建 2 个路由:

  1. 路径:“/foo/{proxy+}”,参数映射:“/$request.path.proxy”

  2. 路径:“/bar/{proxy+}”,参数映射:“/$request.path.proxy”

“proxy+”是一个贪心路径变量,所以它会包含/foo/或/bar/之后的路径。

您可以将此变量与参数映射一起使用,以覆盖后端将接收的路径。

于 2021-10-29T00:07:16.137 回答