从Google Cloud Storage加载大文件到Google Cloud Functions?

5

有没有办法从Google Cloud Storage加载大文件(>100MB)到Google Cloud Functions?我在他们的配额中读到,"后台函数的最大事件大小"限制为10MB。我能分块读取它或类似的东西吗?

非常感谢。


文件从哪里来?如果它们来自客户端设备,请使用Firebase云存储SDK上传文件。 - Frank van Puffelen
@FrankvanPuffelen 它们存储在 Google Cloud 存储桶中。 - Thorolus
2个回答

3

云存储的云函数是通过文件的元数据触发的,这个元数据相对较小,不会超过最大事件大小限制。

要访问文件的实际内容,可以使用 Cloud Storage 的 Node.js 包,该包不受10MB限制的影响。 (查看详细)


1
这是完全错误的。您无法从/向Google Cloud Functions下载或上传大于10MB的文件。您不会收到错误提示,函数将会超时。 - Leigh Bicknell
如果您的函数超时,那可能与文件大小和传输速度的组合有关。例如,从提供1Kb/s带宽的服务下载1Mb文件时可能会超时。当然,较大的文件更容易超时,但在这种情况下,失败的主要原因是下载所需的时间。 - Frank van Puffelen
这是来自Google Cloud Functions到Google Cloud Storage的内容。一个9MB的文件可以在不到一秒钟的时间内传输成功,而一个11MB的文件则在5分钟(300秒)后超时。以下链接为其他人尝试进行视频处理并得到类似结果的代码示例:https://codepen.io/positlabs/post/ffmpeg-in-google-cloud-functions# - Leigh Bicknell
这个问题涉及到一个更普遍的问题:10Mb的事件数据限制并不自动意味着没有办法处理> 10Mb的文件。在特定的服务组合和函数代码中可能会有限制,对此我建议你打开一个具体的问题,并使用 MCVE(其中链接的codepen 可能是一个很好的开始)。 - Frank van Puffelen
你所提供的博客文章失败是因为他们从请求中读取了视频数据,10MB*确实适用。如果他们从服务中流式传输相同的数据,则不会达到该限制。 - Frank van Puffelen
显示剩余9条评论

0

很遗憾,据我所知这是不可能的。

但是,通过设置resumable=true,从Google Cloud Functions上传更大的文件到Cloud Storage是可能的。它的工作原理是将文件的10MB上传到您的存储桶中,请求最终超时并重试,然后重新下载、重新处理和重新上传文件,从上次离开的地方恢复下一个10MB的文件,以此类推。

显然,这需要反复进行所有处理,并且请求超时使整个过程极其低效,不建议使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接