使用 Google Cloud Functions 实现微服务的 API 网关

使用 Google Cloud Functions 实现微服务的 API 网关

输入

例如,我们有几项服务。

  1. 账户服务
  2. 产品服务
  3. 支付服务

每个服务都是一个单独的 Google Cloud Function。每个服务都有自己的 HTTP API。例如,帐户服务具有:

  1. https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/sign-up
  2. https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/sign-in
  3. https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/reset-password
  4. ETC

每个服务都有自己的 swagger 文档端点/docs

问题

如何使我的云功能私有化(不公开访问)并将其置于某些 API 网关后面?

笔记

Google 为 Cloud Functions 提供了 Endpoint(请参阅https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions)。但据我了解,Endpoints 仅允许您定义 yaml OpenAPI 文件。

在这个 yaml 文件中,我可以定义如下内容:

swagger: '2.0'
info:
  title: Cloud Endpoints + GCF
  description: Sample API on Cloud Endpoints with a Google Cloud Functions backend
  version: 1.0.0
host: HOST
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

但就我而言,我需要有代理我的云功能的能力(比如反向代理)。

答案1

你应该使用Google 云端点

可扩展服务代理是 Endpoint 组件之一,正是您的情况所需要的。

可扩展服务代理 (ESP) 是一种高性能、可扩展的代理,它在 OpenAPI 或 gRPC API 后端前面运行,并提供身份验证、监控和日志记录等 API 管理功能。

您可能还会发现此链接很有用:配置和部署 API

相关内容