云函数生成错误-无法从映像的配置文件中获取操作系统



当我尝试部署云功能时,我看到了这个云构建错误:

"步骤#2-";分析器":[31;1错误:[0]未能初始化缓存:未能创建映像缓存:访问缓存映像"us.gcr.io/MY_PROJECT/gcf/us-central1/SOME_KEY/cache:latest":未能从映像"us.gcr.io/MY_PROJECT/gcf/us-central 1/SOME-KEY/cache:last"的配置文件中获取操作系统

我可以在本地构建和模拟云功能,但由于这个错误,我无法部署它。到目前为止,我能够很好地部署。我到处找了找,找不到任何关于这件事的讨论。有人知道这里发生了什么吗?

更新:我3天前部署了一个新函数,现在似乎无法部署更新。我也遇到了同样的错误。我很确定这是由于我设置的生命周期规则,以确保我不会一直存储函数的图像:Firebase存储工件是巨大的,并且不断增加。这条规则很重要,因为我不想为不必要的存储付费,但它似乎是我们这里问题的根源。谷歌的人能调查一下吗?

我得到了同样的错误,即使是以前成功部署的代码。

解决方法是删除Container Registry中失败的Firebase函数的Docker映像,然后重新部署这些函数。(图像将在部署时重新创建。(

错误仍然偶尔发生,所以我怀疑这可能是Firebase部署过程中引入的错误。值得庆幸的是,上面的解决方法在每次出现错误时都能解决问题。

我也遇到了同样的问题,并通过删除Firebase项目的Container Registry中的图像来解决。

我当时做了一个脚本,我会把它放在这里。用法如下。如果你喜欢,请使用它。

  1. 安装Google Cloud SDK
  2. 下载脚本
  3. CONTAINER_REGISTRY编辑为您的注册表名称。例如:CONTAINER_REGISTRY=asia.gcr.io/project-name/gcf/asia-northeast1
  4. 授予执行权限。-$ chmod +x script.sh
  5. 执行它。-$ sh script.sh
  6. 部署您的功能

过去几天我遇到了同样的问题,正在与支持部门联系。我有相同的日志,在我的情况下,它没有连接到工件,因为工件在部署时会自动重建(阅读下面关于与工件相关的一个微妙案例以及如何修复它(,但删除功能和重新部署为我解决了这个问题。

工件自动清理

请注意,如果工件桶是空的,那么问题就在其他地方。

但如果它不是空的,你可以做的是解决与工件自动清理相关的任何可能的问题,就是删除整个";容器";文件夹,然后重新部署。请确保不要删除工件桶本身

firebase的Dough在你提到的问题中证实,删除工件内容是安全的。

因此,以下是如何删除它:

  1. 转到谷歌云控制台,选择您的项目->存储->浏览器https://console.cloud.google.com/storage/browser

  2. 选择";人工制品";桶

  3. 选择";容器";并将其删除

如果问题在这里,那么在那之后应该可以正常工作。

发生这种情况是因为您在问题中提到的删除规则检查";最后更新的";在重新部署时,每个文件的时间戳只更新一些文件。因此,第二天规则将删除一些文件,同时保留其他文件,这将导致在这种情况下存储桶的状态不一致。所以你只需要手动删除所有内容。

最新更新