提问者:小点点

为什么为每个函数部署复制所有Google Cloud Function源文件?


我通过Firebase控制台注意到我的gcf源存储桶(每个云函数区域一个)占用了大量存储空间。(大约2GB,当我的函数文件夹只有47Mb时)。

在深入其中一个存储桶后,我发现每个部署的函数都有2个文件夹(大概是最新和最新的-1版本)。在这些文件夹中是一个. zip文件,其中包含ENTIRE Firebase函数文件夹。所有脚本文件,完整的node_modules文件夹等。

可以想象,这加起来非常快,2GB是可以理解的。

我的问题是:

  1. 为什么每个函数都需要一个包含整个函数目录的zip文件?
  2. 我可以安全地删除所有这些吗?
  3. 我如何防止这种情况在未来发生?

对于更多的上下文,我已经完成了全部和部分功能部署,但似乎无论哪种方式都有相同的结果。

注意-我在按照前一个问题清理我的人工制品文件夹后遇到了这个问题:如何从GC存储中删除过时的Firebase云函数容器?


共1个答案

匿名用户

要理解为什么,你需要知道这个过程。你的代码被上传到Cloud Storage,并根据你的代码构建一个容器(通过Cloud Build和Buildpack)。每个Cloud Functions版本都是独立且不可变的,因此没有代码共享,每次部署函数时,你都在该函数和容器内部署了整个代码。

你能删除那些目录吗?是的,你可以。部署后,源文件在存储桶上是无用的。如果你愿意,你可以在存储桶上设置一个生命周期,并删除超过1天的文件。这样你就可以保持目录干净。

小心,我只谈论gcf源存储桶!!因为容器存储在工件注册表中,如果您删除存储桶注册表,您现在不再能够获取容器(和代码)。