【发布时间】:2023-02-21 23:58:44
【问题描述】:
我的 Web 应用程序是基于微服务 (AWS Lambda) 构建的。对于应用程序内使用,我们调用 API 网关 rest api,其中 JWT 由自定义 lambda 授权方进行身份验证,然后根据调用 api 的服务,相应的 Lambda 对其进行处理。
举个例子,假设我有一个学校管理应用程序,其中每个业务逻辑都分为自己的微服务。
所以与students有关的任何事情都由student-lambda处理,可以使用端点https://students-api-service.mydomain.com/api/{+proxy}来调用它
行政服务,前台电话https://administration-api-service.mydomain.com/api/{+proxy}
你明白了。
现在我需要公开我的服务的一些功能以创建一个公共 API,外部开发人员可以在其中向我们注册并从他们的应用程序调用我们的 API(例如与我们的集成)。
我不想公开当前的 API,主要有两个原因。
- 每个服务都有自己的 route 53 记录,这会让用户感到困惑。我宁愿有一个单一的域,我可以从中提供请求;就像是
https://api.mydomain.com/api/studentshttps://api.mydomain.com/api/administration-
我想放置另一个授权者,它只用于开发者授权,与普通用户无关。
-
现在,我的 lambda 都没有任何保留的并发设置。对于开发人员使用,我需要减少(或至少消除)冷启动时间问题以加快交付速度 + 添加一定程度的 API 节流和速率限制。
我有哪些可能的选择?我不想在单存储库/服务器中重写我的微服务中的业务逻辑,因为这意味着要维护代码两次。
我的另一个想法是为任何 api 调用创建一个 lambda,并从内部调用其他 lambda 以返回数据。有没有其他可敬的方式来实现这一目标?
-
【问题讨论】:
标签: amazon-web-services api aws-lambda microservices aws-api-gateway