将 GCS 存储桶链接到 Firebase (projects.buckets.addFirebase) 时出现 RESOURCE_EXHAUSTED 错误

Posted

技术标签:

【中文标题】将 GCS 存储桶链接到 Firebase (projects.buckets.addFirebase) 时出现 RESOURCE_EXHAUSTED 错误【英文标题】:RESOURCE_EXHAUSTED error when linking a GCS bucket to firebase (projects.buckets.addFirebase) 【发布时间】:2022-01-10 14:47:45 【问题描述】:

我有一个创建 GCS 存储桶的脚本,将其链接到 firebase 并在存储桶上应用 firebase 规则。最近,我遇到了这个错误,它无法将 GCS 存储桶链接到 Firebase。

我正在使用 REST 方法 projects.buckets.addFirebase 将 GCS 存储桶导入到 Firebase。 https://firebasestorage.googleapis.com/v1beta/bucket=projects/*/buckets/*:addFirebase

API 的响应表明资源已耗尽。


  "error": 
    "code": 429,
    "message": "Resource has been exhausted (e.g. check quota).",
    "status": "RESOURCE_EXHAUSTED"
  

所以我检查了 firebase googleapis 的配额,它说每分钟的使用量已达到限制。好的,如果是这样的话,为什么即使在几天不活动之后它也不会重置。每次发出请求时都会收到错误消息。如果是每分钟限制,为什么不在下一分钟重置?如果我达到每分钟一次的限制,我们以后就不能使用该服务了吗?

我尝试删除 Firebase 安全规则(存储和 Firestore),但仍然出现同样的错误。

我真的不明白错误和它所链接的配额。我该如何克服这个错误?我现在无法向 Firebase 添加任何存储桶。我知道我们可以增加配额,但如果超出限制,我可能会遇到同样的情况。

【问题讨论】:

【参考方案1】:

当您用完配额时,您尝试完成的任务(例如部署应用、启动新项目或联系 API)通常会失败,并且您会收到配额错误。在您释放资源(用于分配配额)、时间段重置(用于速率配额)或您寻求并获得quota increase 之前,任务将继续失败。

此错误可能由已超出的消息速率配额、已超出的设备消息速率配额或已超出的主题消息速率配额触发。

error 429 表示您可能违反了Google's Terms of Service(尤其是在 d. API 限制下)。 当您拨打太多电话时,您可能会被列入黑名单,该名单将在一段时间后到期。 People API 的限制。您需要申请更高的配额。

设置监控以在您接近配额限制时通知您,这将帮助您避免配额错误。有关监控您的配额的更多信息,请参阅本出版物后面关于配额指标的Monitoring and alerting 部分。

Google 没有透露其限制的所有费率,表面上是为了防止规避或允许在执行过程中更加灵活。

这里还有一个关于Limits and Quotas on API requests的链接。

【讨论】:

我了解配额和限制。但是在这种情况下,我不知道我超出配额的服务是什么?我怎么找到那个?错误只说我超出了配额,而不是哪个配额? 这个问题不是必须的,因为服务,请考虑“当您拨打太多电话时,您可能被列入黑名单,该名单有时会过期”。现在,要检查可能引发错误消息的服务是什么,有两种方法可以使用 Google Cloud Console 查看您当前的配额:查看配额页面和使用 Cloud Console API 仪表板。 cloud.google.com/docs/quota#viewing_your_quota_console 我了解配额和黑名单。但是重置需要多长时间?现在已经3周了。在报价页面中,firebase API 调用明显超过了限制。但是它是如何重置的。我希望这是我最初的问题,并且我在我的问题中明确提到了它。 导航到 App Engine 的设置页面:console.cloud.google.com/appengine/settings,解除支出限制,然后在 5 分钟内重试 API 请求。此外,这里是与可能有帮助的同一问题相关的 *** 答案:***.com/questions/56847616/… 我在 appengine 设置页面中找不到任何要重置的内容。我已经删除了存储桶,firebase 安全规则和 firebase API 调用都在限制之下。我仍然收到此错误。我真的不知道我达到的配额限制是多少?为什么不重置?已经 3 周了。【参考方案2】:

最后,我能够解决这个问题。

看起来 Firebase 端有一些孤立的存储桶(被软删除),它们导致了问题。

为了摆脱它们,我不得不发出一个 API 请求来列出存储桶。 https://firebasestorage.googleapis.com/v1beta/parent=projects/*/buckets?pageSize=1000

我假设这清除了孤立的存储桶,之后我能够创建新的 gcs 存储桶并将它们添加到 firebase https://firebasestorage.googleapis.com/v1beta/bucket=projects/*/buckets/*:addFirebase

我不确定这是否是问题所在以及解决方案。所以,我在另一个也有同样问题的项目中尝试了同样的方法。它奏效了。

让我知道这是正确的解决方案,还是靠运气解决的问题:)

【讨论】:

以上是关于将 GCS 存储桶链接到 Firebase (projects.buckets.addFirebase) 时出现 RESOURCE_EXHAUSTED 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase Cloud Storage 上创建存储桶

将多个 .gz 文件从一个 GCS 存储桶复制到 Java 中的另一个存储桶

Cloud Function 将存储桶中的所有文件复制到同一个 GCS 存储桶内的文件夹中

如何使用 multer 和 NodeJS 将图像上传到 GCS 存储桶?

将 GCS 存储桶中的 .csv 文件中的数据加载到 Cloud SQL 表中:

如何将 Google Analytics 数据导出到 Google GCS 存储桶或 BigQuery?