输入
例如,我们有几项服务。
- 账户服务
- 产品服务
- 支付服务
每个服务都是一个单独的 Google Cloud Function。每个服务都有自己的 HTTP API。例如,帐户服务具有:
- https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/sign-up
- https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/sign-in
- https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/reset-password
- 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