通过 Cloud Endpoints 进行 Cloud Firestore REST API 调用?

Making a Cloud Firestore REST API call through Cloud Endpoints?

是否可以创建 Cloud Endpoint 以便对 Firestore REST API 服务进行 HTTP 调用?

原因是使用自定义 URL 来调用 - 例如“https://whatever.com/api/things”,而不是“https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(默认)/documents/things”。

我尝试为此创建一个 Open API yaml 文件,但出现错误:

User does not have permission to access services instance [firestore.googleapis.com] (or it may not exist): Caller does not have permission 'servicemanagement.services.update' on service 'firestore.googleapis.com'.

甚至有可能吗,还是我必须创建一个 Cloud Function 来实现这一点?

更新

这是我的 yaml 文件:

swagger: '2.0'
info:
  title: "My API"
  description: "Returns something"
  version: 1.0.0
host: "firestore.googleapis.com"
basePath: "v1/projects/app-emojise-com/databases/(default)/documents"
schemes:
  - "https"
produces:
  - application/json
paths:
  "/foo/{fooId}":
    get:
      summary: "Returns foo"
      operationId: "foo"
      parameters:
        -
          name: fooId
          in: path
          required: true
          type: string
      responses:
        200:
          description: "OK"
          type: string
        404:
          description: "Error"
          type: string
        403:
          description: "Forbidden"
          type: string

我已经尝试按照给定的示例进行操作 here

您看到的错误是因为您正在尝试将配置上传到 firestore.googleapis.com,而您并不拥有该配置。这在您的 yaml 文件中的“主机”字段中指定。相反,您必须使用自己的其他域名。

Endpoints 是一个 API“控制平面”,它实际上并不处理代理请求。您正在执行的操作只会将 API 配置上传到我们的服务器。您实际上需要设置某种服务来侦听请求并将它们转发到 Firestore 本身。我们确实提供了一个开源解决方案来执行此操作,称为 ESP,但这仍然需要托管在某个地方。

理论上,Endpoints 旨在保护您自己的 API,而不是 运行 作为其他人的代理。因此,它很可能不会按照您想要的方式工作。

我建议只构建一个合适的 API,并将其托管在 Cloud Run 之类的东西上。您可能仍想对其使用 Endpoints。