例如,我们有一些服务。
每个服务都是单独的Google Cloud Function。 每个服务都有其自己的HTTP API。例如,帐户服务具有:
每个服务都有自己的一般文档端点/docs
。
如何使我的Cloud Functions私有(没有公共访问权限)并将其放置在某些API网关后面?
Google提供了云功能的端点(请参见https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions)。 但是,据我了解,端点允许您仅定义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
但就我而言,我需要具有代理我的云功能(例如反向代理)的能力。
答案 0 :(得分:1)
使用apigee,它是Google云平台的一部分,是针对您的用例而设计的
答案 1 :(得分:1)
您可以使用端点。当然,您必须手动定义OpenAPI yaml文件(版本2.0,而不是3!)。使用通配符和路径翻译定义
...
paths:
/account/*:
get:
summary: sign-up a user
operationId: sign-up
x-google-backend:
address: https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net
path_translation: APPEND_PATH_TO_ADDRESS
responses:
'200':
description: A successful response
schema:
type: string
APPEND_PATH_TO_ADDRESS
只需将路径值粘贴到后端定义的末尾。顺便说一句,仅使用此定义,您就可以到达所有私有函数端点和子端点,例如您的招摇文档。
您可以使用API KEY(I wrote an article on this)保护网关,但文档中还有另一种安全解决方案。
但是,您不能使用Endpoint提出的开发人员门户,因为它基于Endpoint yaml文件定义,并且未聚合所有发现的服务定义(在您的/docs
路径中)。
答案 2 :(得分:1)
您的问题-我如何使我的Cloud Functions私有(无公共访问权限)并将其放置在某些API网关后面?
如果您想管理Cloud功能访问级别(如开发/更新/部署或调用或无访问权限),则可以通过Cloud IAM服务(https://cloud.google.com/iam/)进行。
除了Apigee(API网关)之外,还有一种很好的机制可以实现这一目标。
在Apigee中,尝试执行以下步骤-
立即查看Apigee提供的OAuth安全性链接-https://www.youtube.com/watch?v=hZbyR8L-IIs
答案 3 :(得分:0)