【问题标题】:Firebase Functions - You have exceeded your deployment quotaFirebase 函数 - 您已超出部署配额
【发布时间】:2019-11-12 19:34:09
【问题描述】:

我有一个包含 70 多个函数的 Firebase Functions 项目。它在节点 8 上运行。

经过 5-7 次完整部署后,我收到错误消息:

You have exceeded your deployment quota, please deploy your functions in batches by using the --only flag, and wait a few minutes before deploying again. Go to https://firebase.google.com/docs/cli/#deploy_specific_functions to learn more

不清楚这是什么原因?我达到了哪个极限?配额何时更新?

几分钟后部署不工作。

【问题讨论】:

标签: firebase google-cloud-functions


【解决方案1】:

我已在 Firebase 社区 slack 上寻求帮助,现在我明白发生了什么。谢谢,@katowulf。

配额如下所述: https://firebase.google.com/docs/functions/quotas#quota_limits_for_firebase_cli_deployment

我们有 3 个与部署相关的配额:

  1. API 调用 (READ) - 每次部署 1 次调用,无论有多少函数
  2. API 调用 (WRITE) - 每个函数 1 次调用
  3. 最大构建时间 - 每个函数需要几分钟,具体取决于大小

要查看您点击了哪一个,您可以访问配额管理: https://console.cloud.google.com/projectselector2/projectselector/iam-admin/quotas?service=cloudfunctions.googleapis.com&usage=ALL&supportedpurview=project

就我而言,我已经达到了配额3. Max build time,该配额限制为每天 12000 秒(默认情况下)。经过一些实验,我注意到一个函数 deploy 增加了大约 70 秒的构建时间(在你的情况下可能是不同的数字!)。所以 12000/70 每天可以部署大约 170 个函数。

在配额管理页面(第二个链接)上,您可以使用Edit Quota 选项要求增加任何配额。无需任何额外批准即可获得 36000 秒的构建时间,在我的情况下,这会将单个功能的部署数量增加到每天 500 多个。

在 0:00 UTC-07:00 左右将配额重置为 0,并且我的函数已部署到 us-central1。所以一天似乎有一个固定的时间段(它不是最后 24 小时移动窗口)。

对于较大的项目,您不应一次部署整个项目,而应仅部署单个功能,如链接https://firebase.google.com/docs/cli/#deploy_specific_functions中所述

【讨论】:

  • Firebase 是否建议单独部署这些功能?这种方法使 CI 变得很困难,如果不是不可能的话。
  • 特别是考虑到无法禁用函数或函数触发器 - 因此,如果您有导入大量数据的脚本,则必须删除并重新部署函数以免导致不必要的触发器。实际上,我主要是在删除时达到这些配额——而且我已经逐组删除了。但是 100s 在 Ci 的上下文中很奇怪。
  • 如果我们遇到这个错误并且只部署了一些函数,是否部署环境变量?
【解决方案2】:

您的功能超过 70 个,因此在短时间内部署 5-7 次将超过此处提到的限制之一:https://firebase.google.com/docs/cli/#deployment_quotas

对于 Firebase CLI 部署的每个函数,这些类型的速率和时间限制都会受到影响:

API calls (READ) - 1 call per deployment, no matter how many functions
    Limit: 5000 per 100 seconds
API calls (WRITE) - 1 call per function
    Limit: 80 per 100 seconds
Max build time - A few minutes per function depending on size
    Limit: 120 minutes per day

这是一个可能与您的错误有关的示例:https://firebase.google.com/docs/cli/#deployment_quotas

您有可能(尽管不太可能)超出配额 限制 Firebase 部署操作的速率或数量。为了 例如,当部署大量函数时,您可能 收到 HTTP 429 配额错误消息。要解决此类问题,请尝试 使用部分部署或请求增加特定的配额 Firebase 服务。例如,配额称为 Write requests per 每个用户 100 秒可能有助于解决 Cloud Functions 429 上面引用的错误。

如果您想部署每个函数,您可以创建一个脚本,该脚本将为每个函数调用 deploy。这将确保您不会超出生产中的限制。

在开发中,你知道哪些函数会根据代码变化而发生变化,所以你只能部署修改后的函数并进行测试。

【讨论】:

  • 谢谢,你这么快,我只是想在这里分享我的发现:)
【解决方案3】:

为了解决这个问题,我维护了一个与 index.ts 文件相同的 shell 文件,并分别深入了解这些功能。

详情请看图片

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 2016-11-16
    • 1970-01-01
    • 2017-07-20
    • 2020-02-16
    • 2020-04-13
    • 2021-10-23
    • 2019-08-23
    • 2023-03-26
    相关资源
    最近更新 更多