如何在 google 云存储上扩充大型 zip 文件?

How do I inflate a large zip file on google cloud storage?

我正在 google 云上实施一个无服务器项目。 用户将在云存储桶上上传 4GB 大小的 zip 文件。 (用户上传前自行压缩文件) 在处理内容之前需要解压缩它们。

我找到 some solutions 小文件:

  1. 将 zip 文件从存储桶下载到云功能
  2. 在函数中解压
  3. 上传解压文件到存储桶

这里,函数下载的文件存储在分配给函数的内存space中。 但是,云函数的最大内存是2GB,对我来说太小了。

在最坏的情况下,我需要使用 VM,但那会很昂贵。

还有其他办法吗?首选语言是 python.

node 的解决方案如下所示:

  1. 使用@google-cloud/storage 库从存储中的 zip 文件create a read stream
  2. 通过管道将流传输到 unzip-stream 等模块,它表示它可以让您将压缩文件作为流处理。
  3. 对于 zip 中的每个条目,使用 Cloud Storage 库 create a write stream 到存储中的新文件,并将输入流从 unzip-stream 传输到新的输出流。

您可能需要很好地理解节点流才能实现这一点。

因为这一切都是通过管道流发生的(而不是一次将所有内容读入内存),它应该使用最少的内存。