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

Why are all Google Cloud Function source files replicated for every function deployment?

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

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

如你所想,这加起来很快,2GB可以理解。

我的问题是:

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

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

注意 - 在按照之前的问题清理我的 artefacts 文件夹后,我遇到了这个问题:

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

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

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