如何设置HTTP GCF的公共路由? 所以,目前的默认路径是这样的。
https://us-central1-poised-breaker-162819.cloudfunctions.net/function-1
但我想以这种方式使用它
或
https://myfunction.com/thisroute
实际上,这是命名空间甚至代理请求到适当功能的问题。如何实现这一目标?
更新1
似乎我们可以使用端点服务。但它仍然不清楚它是否适用于GCF。
答案 0 :(得分:1)
我认为最好不要使用HTTP调用机制,因为它不需要任何身份验证即可调用。 尝试改用其他选项-https://cloud.google.com/functions/docs/calling
答案 1 :(得分:1)
云端点充当云功能的API网关。
对于云功能https://[CLOUD_FUNCTION_REGION].cloudfunctions.net/my-function,
在Cloud Shell中设置项目ID
gcloud config set project [PROJECT_ID]
将ESPv2 Beta部署到Cloud Run。将 CLOUD_RUN_SERVICE_NAME 替换为您要用于服务的名称。
gcloud run deploy CLOUD_RUN_SERVICE_NAME \
--image="gcr.io/endpoints-release/endpoints-runtime-serverless:2" \
--allow-unauthenticated \
--platform managed
命令执行结束时,其详细信息如下所示
服务[CLOUD_RUN_SERVICE_NAME]的修订 [CLOUD_RUN_SERVICE_NAME-00001-ces]已部署并正在投放 的流量为100% https://CLOUD_RUN_SERVICE_NAME-65zrpjcu3q-uk.a.run.app
从上面的命令中接收主机名( CLOUD_RUN_SERVICE_NAME-65zrpjcu3q-uk.a.run.app )
使用OpenAPI spec配置创建YAML文件api.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: CLOUD_RUN_SERVICE_NAME-65zrpjcu3q-uk.a.run.app
schemes:
- https
produces:
- application/json
paths:
/thisroute:
get:
summary: Custom function route
x-google-backend:
address: https://[CLOUD_FUNCTION_REGION].cloudfunctions.net/my-function
responses:
'200':
description: A successful response
schema:
type: string
部署端点配置:
gcloud endpoints services deploy api.yaml
现在,云功能请求可以通过端点https://CLOUD_RUN_SERVICE_NAME-65zrpjcu3q-uk.a.run.app/thisroute进行路由。
也要使用自定义域名,需要验证域名。对于 遵循here
答案 2 :(得分:0)
如果你使用几乎相同的firebase功能,你可以做到! https://firebase.google.com/docs/hosting/functions
答案 3 :(得分:0)
目前不可能。您将需要一个API代理,老实说,我不建议公开公开网址。
在我看来,目前最优雅的解决方案是基于云pub / sub创建简单的代理应用程序,您可以使其在gap,gke或新的云上运行,以便您将其扩展为0
逻辑可以是动态的,如下所示:
但是,此时您应该问自己,与让应用程序在gae / gke上运行以及使用其他服务来分散关注点相比,这是否真的有用,因为从成本角度考虑可能会更便宜。
如果您想为“ api网关”问题提供SaaS解决方案,还可以查看Apigee