【发布时间】:2021-04-01 17:29:42
【问题描述】:
我们首次在 AWS ECS 中部署节点微服务,每个服务都在监听动态端口。
以下是启动节点应用程序时暴露的微服务的API。
动物微服务
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/animal/:id, GET} route +2ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/animal/getAll, GET} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/animal, POST} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/animal/:id, PUT} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/animal/:id, DELETE} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RoutesResolver] dogPlanController {/dog}: +0ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/dog/:id, GET} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/dog, POST} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/dog/:id, DELETE} route +1ms
鸟微服务
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/bird/:id, GET} route +2ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/bird/getAll, GET} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/bird, POST} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/bird/:id, PUT} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/bird/:id, DELETE} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RoutesResolver] eaglePlanController {/eagle}: +0ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/eagle/:id, GET} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/eagle, POST} route +1ms
[Nest] 29 - 12/22/2020, 8:12:30 AM [RouterExplorer] Mapped {/eagle/:id, DELETE} route +1ms
用户微服务
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/healthcheck, GET} route +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RoutesResolver] SsoController {/sso}: +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/sso, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RoutesResolver] AuthController {/auth}: +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/signup, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/sendotp, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/verifyOtp, POST} route +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/login, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/duplicateUserName, GET} route +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/resetPasswordOtp, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/auth/resetPassword, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RoutesResolver] UserController {/user}: +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user/questionnaire/:id, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user/questionnaire/:id, GET} route +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user/:id, GET} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user, GET} route +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user/userList, POST} route +1ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user/connectWearable, POST} route +0ms
[Nest] 28 - 12/21/2020, 11:29:32 PM [RouterExplorer] Mapped {/user/getArticles, POST} route +1ms
后端微服务
[Nest] 29 - 12/22/2020, 12:02:28 AM [RoutesResolver] AuthController {/auth}: +1ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/auth/signup, POST} route +0ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/auth/login, POST} route +1ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RoutesResolver] animalController {/animal}: +0ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/animal/color, GET} route +1ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/animal/color, POST} route +0ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/animal, GET} route +1ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/animal, POST} route +1ms
[Nest] 29 - 12/22/2020, 12:02:28 AM [RouterExplorer] Mapped {/animal/:id, DELETE} route +0ms
..
..
..
..
开发者期待以下路由。
注意:仔细观察他们请求的路由。
对于动物微服务,
example.com/animal -->> animal-microservice-url/animal
example.com/animal/dog -->> animal-microservice-url/dog
对于 USER 微服务,
example.com/user -->> user-microservice-url/user
example.com/user/auth -->> user-microservice-url/auth
example.com/user/sso -->> user-microservice-url/sso
有人可以帮我在 AWS 环境中实现这一点吗?
我尝试了基于 ALB 路径的路由,但由于 ALB 没有去除 alburl 中的后缀,因此该方案没有成效。
我也尝试过使用 ALB 的 API Gateway。我设置了一些基于 ALB 路径的路由,以便它可以接受来自 apigateway 的请求并将它们转发到目标组。
但是,我在 APIGateway 中设置 `wildcard, *, in ALB path based routing' 以将所有后缀路由到一个 url 时遇到了麻烦。
示例:
apigatewayurl.com/animal -->> alburl.com/animal
apigatewayurl.com/animal/dog -->> alburl.com/dog
以上两个工作正常。
但以下不是。
apigatewayurl.com/animal/:id -->> alburl.com/animal/:id
apigatewayurl.com/animal/getAll -->> alburl.com/animal/getAll
apigatewayurl.com/animal/dog/:id -->> alburl.com/dog/:id
如何创建一个 HTTP API 路由,以便它从 apigatewayurl 访问 alburl 中的所有后缀?
比如,当我输入apigatewayurl.com/animal/dog/* -->> alburl.com/dog/*
我尝试尽可能地提出问题。
请随时询问配置。
如果这可以通过 AWS 中的任何其他服务完成,请在此处建议我。
【问题讨论】:
标签: node.js amazon-web-services aws-api-gateway aws-application-load-balancer