【问题标题】:How to expose microservice application APIs to external developers如何将微服务应用 API 暴露给外部开发者
【发布时间】: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,主要有两个原因。

  1. 每个服务都有自己的 route 53 记录,这会让用户感到困惑。我宁愿有一个单一的域,我可以从中提供请求;就像是

    https://api.mydomain.com/api/students

    https://api.mydomain.com/api/administration

    1. 我想放置另一个授权者,它只用于开发者授权,与普通用户无关。

    2. 现在,我的 lambda 都没有任何保留的并发设置。对于开发人员使用,我需要减少(或至少消除)冷启动时间问题以加快交付速度 + 添加一定程度的 API 节流和速率限制。

    我有哪些可能的选择?我不想在单存储库/服务器中重写我的微服务中的业务逻辑,因为这意味着要维护代码两次。

    我的另一个想法是为任何 api 调用创建一个 lambda,并从内部调用其他 lambda 以返回数据。有没有其他可敬的方式来实现这一目标?

【问题讨论】:

    标签: amazon-web-services api aws-lambda microservices aws-api-gateway


    【解决方案1】:

    听起来您需要创建一个新的公共 API 网关,作为一个映射到所有当前 Lambda 函数的 API。您可以使用需要 API 密钥的 usage plans 配置这个新的 API 网关。您将为每个需要访问 API 的开发人员生成一个新的 API 密钥。这将使每个开发人员无需进一步的身份验证步骤即可访问 API,并对每个开发人员实施速率限制。

    至于预留并发问题,这纯粹是关于您如何部署 Lambda 函数的细节,与谁在访问这些函数或它们如何被访问无关。除非您只想部署所有函数的完整第二个副本以启用预留并发,否则您可能只需要为当前的 Lambda 函数部署配置预留并发。

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 2022-10-13
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多