无法部署 Cloud Functions,因为“清理构建映像时出现未处理的错误”

问题描述 投票:0回答:9

我已经部署了数百个功能,这是我第一次遇到这个问题。简单地说,它停止部署功能进程,说:

清理构建镜像时出现未处理的错误。如果不加以纠正,这可能会导致每月产生少量账单。您可以尝试通过重新部署来删除这些映像,也可以在 https://console.cloud.google.com/gcr/images/[project-name]/us/gcf

手动删除它们

我的部署方式是通过 Firebase CLI 命令:firebase deploy --only functions:nameOfFunction

问题是我必须删除的那些图像是什么?为什么?我该如何解决?

firebase google-cloud-functions firebase-tools
9个回答
14
投票

Cloud Functions 使用另一个名为 Cloud Build 的产品来构建实际部署的服务器映像。 这些图像存储在云存储中,并且该存储费用将计入您的帐户。

了解更多相关信息:

观看:

您应该能够在 Google Cloud 控制台中手动找到并删除这些文件。 但听起来这里有一个错误,文件没有被自动清理,所以你直接联系Firebase支持


11
投票

这里给出了各种答案的一般故障排除提示:

  1. 如果构建失败,请在构建输出中进一步阅读其他错误
  2. 将 --debug 添加到您的 CLI 调用中,即:
    firebase deploy --only functions --debug

使用 --debug 我在输出中发现了这一点:“资源上的权限‘artifactregistry.packages.delete’被拒绝”

我的解决方案是将 Artifact Registry Administrator 角色添加到部署该功能的 IAM 用户(除了 Firebase AdminService Account User 角色)。


9
投票

对我来说,这个问题似乎与我的 GCF 计费有关 (https://console.cloud.google.com/billing) 我必须去我的计费帐户查看我的付款方式已过期或其他什么情况,并且 GCF 预测每月费用为 0.01 美元,因此部署云功能有点被锁定,直到我更新付款方式。然后部署在更新后立即再次工作。构建清理控制台警告也消失了。

我在 firebase 控制台的函数日志中看到的错误是“计费帐户不可用”。我在谷歌中发现几乎为零的结果。这就是我将其发布在这里的原因。


2
投票

对我来说,这个问题是由一个愚蠢的打字错误引起的。

错误:

函数部署存在以下函数错误: sendNotification(europe-west) i 功能:清理构建文件... ⚠ 功能:清理构建映像时出现未处理的错误。这 如果不加以纠正,可能会导致每月产生少量账单。你可以尝试 通过重新部署来删除这些映像,或者您可以手动删除它们 在...

修复方法是选择正确的区域。

错误区域:

exports.sendNotification = functions
  .region("europe-west")...

正确地区:

exports.sendNotification = functions
      .region("europe-west3")...

1
投票
  1. 转到 https://console.cloud.google.com/apis/api/artifactregistry.googleapis.com/overview
  2. 选择您的项目
  3. 启用 ArtifactRegistry API enter image description here
  4. 再次部署功能

0
投票

根据我的经验,进入云存储并没有解决问题:那里没有要删除的图像。

我通过更改 Node 版本来解决,从 18 移动到 14.0.0

nvm install 14.0.0
nvm use 14.0.0 

0
投票

通过在 Firebase 控制台中浏览函数或通过 https://console.cloud.google.com/logs

检查您的函数日志

对我来说,日志表明我的一个打字稿文件以错误的名称进行编译,并且它弄乱了构建。

检查日志!


0
投票

您可以尝试从项目的ArtifactRegistry > gcf-artifacts中删除您的函数文件 删除你的函数。这对我有用!!

PS。您将获得一个错误打开的注册表链接,然后从面包屑中单击您的项目名称,然后查看 gcf-artifact 存储库,您可以通过查看与您的位置相匹配的位置列来检查该存储库,或者您可以打开每个项目并查看您的项目名称在那里运行 > 打开它并从那里删除最后一个部署函数。


0
投票

就我而言,我去了https://console.cloud.google.com/gcr/images并删除了gcf文件,所以问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.