Google Cloud Functions公共网址

时间:2017-03-30 16:48:55

标签: google-cloud-platform google-cloud-functions

如何设置HTTP GCF的公共路由? 所以,目前的默认路径是这样的。

https://us-central1-poised-breaker-162819.cloudfunctions.net/function-1

但我想以这种方式使用它

https://myfunction.com

https://myfunction.com/thisroute

实际上,这是命名空间甚至代理请求到适当功能的问题。如何实现这一目标?

更新1

似乎我们可以使用端点服务。但它仍然不清楚它是否适用于GCF。

4 个答案:

答案 0 :(得分:1)

我认为最好不要使用HTTP调用机制,因为它不需要任何身份验证即可调用。 尝试改用其他选项-https://cloud.google.com/functions/docs/calling

答案 1 :(得分:1)

云端点充当云功能的API网关。

对于云功能https://[CLOUD_FUNCTION_REGION].cloudfunctions.net/my-function

  1. 在Cloud Shell中设置项目ID

    gcloud config set project [PROJECT_ID]
    
  2. 将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

  3. 使用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
    
  4. 部署端点配置:

    gcloud endpoints services deploy api.yaml
    
  5. 现在,云功能请求可以通过端点https://CLOUD_RUN_SERVICE_NAME-65zrpjcu3q-uk.a.run.app/thisroute进行路由。

  6. 也要使用自定义域名,需要验证域名。对于 遵循here

  7. 中的步骤

答案 2 :(得分:0)

如果你使用几乎相同的firebase功能,你可以做到! https://firebase.google.com/docs/hosting/functions

答案 3 :(得分:0)

目前不可能。您将需要一个API代理,老实说,我不建议公开公开网址。

在我看来,目前最优雅的解决方案是基于云pub / sub创建简单的代理应用程序,您可以使其在gap,gke或新的云上运行,以便您将其扩展为0

逻辑可以是动态的,如下所示:

  • 使用一些内部逻辑读取请求的网址
  • 使用网址路径选择主题
  • 通过pub / sub主题将有效负载转发到云功能

但是,此时您应该问自己,与让应用程序在gae / gke上运行以及使用其他服务来分散关注点相比,这是否真的有用,因为从成本角度考虑可能会更便宜。

如果您想为“ api网关”问题提供SaaS解决方案,还可以查看Apigee