如何在Google云端存储中为大型zip文件充气?

Seu*_*jun 1 zip unzip google-cloud-storage google-cloud-platform google-cloud-functions

我正在Google Cloud上实施无服务器项目。用户将在云存储分区上上传4GB大小的zip文件。(用户在上传之前自行压缩文件)需要先将其解压缩,然后才能处理内容。

我找到了一些小文件的解决方案

  1. 将zip文件从存储桶下载到云功能
  2. 解压缩功能
  3. 将解压缩的文件上传到存储桶

在此,按功能下载的文件存储在分配给该功能的存储空间中。但是,云功能的最大内存为2GB,对我来说太小了。

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

还有其他方法吗?首选语言是python。

Dou*_*son 5

节点的解决方案如下所示:

  1. 使用@ google-cloud / storage库从存储中的zip文件创建读取流
  2. 将流传输到类似于unzip-stream的模块,该模块表示可以将压缩文件作为流处理。
  3. 对于zip中的每个条目,请使用Cloud Storage库创建到存储中新文件的写入流,然后将输入流从unzip-stream传递到新的输出流。

为了实现这一点,您可能需要充分了解节点流。

由于所有这些都是通过流传输流(而不是立即将所有内容读取到内存中)发生的,因此应该使用最少的内存来工作。