Google 云 API 网关端点如何从云存储文件传送数据?

How can a Google Cloud API Gateway endpoint deliver data from a Cloud Storage file?

我正在构建一个大型 API,它将使用 Google 云 API 网关将各种端点路由到不同的服务——有些可能是无服务器云功能,其他人将由我们的 Kubernetes 集群中的 Rails 应用程序提供服务,依此类推。

我们将选择一些信息端点,这些端点需要来自客户端的未经身份验证的访问,其中的信息很少会更改——大约每隔几个月更改一次。我希望将这些端点的内容写入 Google 云存储(在一个不可读的存储桶中),然后允许 API 网关配置将特定端点指向它们(a世界可读的存储桶不符合此项目的安全标准。

我已经为 API 网关创建了一个自定义服务帐户,并为它赋予了相关存储桶的 Storage Object Viewer 角色。

但是,在使用该服务帐户创建 API 配置并在 Postman 中请求端点后,我没有获得预期的 JSON 输出,而是看到了 HTML Google 登录页面。

我的 OpenAPI 配置中的端点定义:

paths:
  /products:
    get:
      x-google-backend:
        address: https://storage.cloud.google.com/<BUCKET_NAME>/products.json
      summary: List of products in JSON format
      operationId: listProductsJson
      produces:
        - application/json
      responses:
        "200":
          description: a product list
          schema:
            type: array
            items:
              $ref: '#/definitions/Product'

这是邮递员的回复:

有没有办法让这个设置正常工作,甚至调试这里发生的事情?我见过人们对 Cloud Functions 和 JWT aud 值有类似的担忧,但遵循对他们有用的方法似乎对 Cloud Storage 没有任何影响。

如有任何帮助,我们将不胜感激! (我是 GCloud 世界的新手,所以如果有人对这些类型的大多数静态端点有替代实现,那也很棒。)

您没有使用正确的 URL。使用 https://storage.googleapis.com/<BUCKET_NAME>/products.json 而不是 https://storage.cloud.google.com/<BUCKET_NAME>/products.json