GAE/P:直接从 GCS 向用户提供文件,无需读入 GAE 内存

GAE/P: Serve file directly from GCS to user without reading into GAE memory

在我的 App Engine 应用程序中,我使用 GCS Python Client library 来存储一些文件。

目前,为了向用户提供文件,我执行以下操作:

  1. 使用 GCS Python 客户端库将文件从 GCS 读取到 App Engine
  2. 使用 webapp2 将文件提供给用户 (self.response.write(...))

似乎应该有一种方法可以将此文件直接提供给用户。

我不想修改 ACL,因为文件需要保持私密性,但最好不必将文件读入 GAE 内存以便为用户提供服务。

有更好的解决方案吗?

生成签名的URL,然后将签名的URL发送给客户端。然后,客户端可以使用已签名的 URL 直接从 GCS 下载数据。您可以在 URL 上设置一个过期时间,以便它仅在您的应用程序可接受的时间段内有效。

文档中的更多信息 -> https://cloud.google.com/storage/docs/access-control#Signed-URLs

下面是一些示例 python 代码 -> https://github.com/GoogleCloudPlatform/storage-signedurls-python