【问题标题】:How can a Google Cloud API Gateway endpoint deliver data from a Cloud Storage file?Google Cloud API Gateway 端点如何从 Cloud Storage 文件传送数据?
【发布时间】:2021-04-20 14:50:07
【问题描述】:

我正在构建一个大型 API,该 API 将使用 Google Cloud API Gateway 将各种端点路由到不同的服务——一些可能是无服务器云函数,其他将由我们 Kubernetes 集群中的 Rails 应用程序提供服务,以及以此类推。

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

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

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

我的 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 世界的新手,所以如果有人对这些主要是静态的端点有替代实现,那也很酷。)

【问题讨论】:

    标签: google-cloud-storage google-cloud-iam google-cloud-api-gateway


    【解决方案1】:

    您使用的网址不正确。使用https://storage.googleapis.com/&lt;BUCKET_NAME&gt;/products.json 而不是https://storage.cloud.google.com/&lt;BUCKET_NAME&gt;/products.json

    【讨论】:

    • 谢谢,这确实改变了一些事情,所以我觉得我更进一步了!但是,我现在收到一个 XML 编码的 AuthenticationRequired 错误。我会继续调查自己,但很乐意接受指针或解决方案:)
    • 如果您的存储桶不是 publc,显然您不能要求 API Gateway 代表请求者向请求添加访问令牌。相反,您可以为身份令牌执行此操作。很奇怪……
    • 好的,感谢您的帮助!看起来这个特定的用例无论如何都会消失 - 看起来这个列表不能像我们最初想象的那样是静态的,所以 GCS 作为一个商店可能根本不可用。但至少我在你的帮助下比我一个人走得更远!相应地接受这个答案。
    猜你喜欢
    • 2020-06-13
    • 2019-11-30
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多