我已经部署了数百个功能,这是我第一次遇到这个问题。简单地说,它停止部署功能进程,说:
清理构建镜像时出现未处理的错误。如果不加以纠正,这可能会导致每月产生少量账单。您可以尝试通过重新部署来删除这些映像,也可以在 https://console.cloud.google.com/gcr/images/[project-name]/us/gcf
手动删除它们
我的部署方式是通过 Firebase CLI 命令:firebase deploy --only functions:nameOfFunction
问题是我必须删除的那些图像是什么?为什么?我该如何解决?
Cloud Functions 使用另一个名为 Cloud Build 的产品来构建实际部署的服务器映像。 这些图像存储在云存储中,并且该存储费用将计入您的帐户。
了解更多相关信息:
观看:
您应该能够在 Google Cloud 控制台中手动找到并删除这些文件。 但听起来这里有一个错误,文件没有被自动清理,所以你直接联系Firebase支持。
这里给出了各种答案的一般故障排除提示:
firebase deploy --only functions --debug
使用 --debug 我在输出中发现了这一点:“资源上的权限‘artifactregistry.packages.delete’被拒绝”
我的解决方案是将 Artifact Registry Administrator 角色添加到部署该功能的 IAM 用户(除了 Firebase Admin 和 Service Account User 角色)。
对我来说,这个问题似乎与我的 GCF 计费有关 (https://console.cloud.google.com/billing) 我必须去我的计费帐户查看我的付款方式已过期或其他什么情况,并且 GCF 预测每月费用为 0.01 美元,因此部署云功能有点被锁定,直到我更新付款方式。然后部署在更新后立即再次工作。构建清理控制台警告也消失了。
我在 firebase 控制台的函数日志中看到的错误是“计费帐户不可用”。我在谷歌中发现几乎为零的结果。这就是我将其发布在这里的原因。
对我来说,这个问题是由一个愚蠢的打字错误引起的。
错误:
函数部署存在以下函数错误: sendNotification(europe-west) i 功能:清理构建文件... ⚠ 功能:清理构建映像时出现未处理的错误。这 如果不加以纠正,可能会导致每月产生少量账单。你可以尝试 通过重新部署来删除这些映像,或者您可以手动删除它们 在...
修复方法是选择正确的区域。
错误区域:
exports.sendNotification = functions
.region("europe-west")...
正确地区:
exports.sendNotification = functions
.region("europe-west3")...
根据我的经验,进入云存储并没有解决问题:那里没有要删除的图像。
我通过更改 Node 版本来解决,从 18 移动到 14.0.0
nvm install 14.0.0
nvm use 14.0.0
通过在 Firebase 控制台中浏览函数或通过 https://console.cloud.google.com/logs
检查您的函数日志对我来说,日志表明我的一个打字稿文件以错误的名称进行编译,并且它弄乱了构建。
检查日志!
您可以尝试从项目的ArtifactRegistry > gcf-artifacts中删除您的函数文件 删除你的函数。这对我有用!!
PS。您将获得一个错误打开的注册表链接,然后从面包屑中单击您的项目名称,然后查看 gcf-artifact 存储库,您可以通过查看与您的位置相匹配的位置列来检查该存储库,或者您可以打开每个项目并查看您的项目名称在那里运行 > 打开它并从那里删除最后一个部署函数。
就我而言,我去了https://console.cloud.google.com/gcr/images并删除了gcf文件,所以问题就解决了。