Google Cloud Run:“FAILED_PRECONDITION:由于配额限制”,但尚未达到实际配额

Fre*_*sar 4 google-cloud-platform gcloud google-cloud-run

我在使用 Google Cloud CLI 部署 NodeJS 服务器时遇到问题,希望得到一些指导。这是我遵循的过程:

  1. 为我的项目执行npm run build,并成功完成。
  2. 设置 Google Cloud 服务帐户并对其进行身份验证。
  3. 使用 Google Cloud 配置 Docker gcloud auth configure-docker
  4. 设置 Google Cloud 项目 ID 和 Cloud Run 的区域。
  5. 尝试使用将我的服务部署到 Cloud Run gcloud run deploy

但是,部署失败并出现以下错误:

ERROR: (gcloud.run.deploy) FAILED_PRECONDITION: failed precondition: due to quota restrictions, cannot run builds in this region. Please contact support
Run Code Online (Sandbox Code Playgroud)

以下是有关我的设置的一些详细信息:

  • NodeJS 版本:18.12.0
  • Google Cloud CLI 版本:最新 457.0.0
  • 地区:europe-west3

我怀疑该问题可能与该地区的配额限制有关europe-west3,但我不确定如何确认或解决此问题。我检查了我的账户配额限制,还好,还没达到。有没有其他人遇到过类似的问题,或者有人知道如何解决?

Fre*_*sar 5

更新 (25/01/24)

一些用户已升级到v460.0.0,并确认此问题现已修复。

问题

Google Cloud CLI 版本 456.0.0上添加了以下内容:

网络安全

  • 向命令添加--billing-project必需的标志gcloud network-security firewall-endpoints create,以便为 API 启用检查、配额和端点正常运行时间计费提供 Google Cloud 项目 ID。
  • 向命令添加--update-billing-project标志gcloud network-security firewall-endpoints update以更新用于 API 启用检查、配额和端点正常运行时间计费的 Google Cloud 项目。所以可能是有关系的。

--billing-account命令似乎是一个测试版功能:

(BETA)此命令设置或更新与项目关联的计费帐户。

--billing-project=BILLING_PROJECT将对在 gcloud 中执行的操作收取配额费用的 Google Cloud 项目。如果您需要对一个项目进行操作,但需要针对不同项目的配额,则可以使用此标志来指定计费项目。如果同时指定了 billing/quota_project 和 --billing-project,则 --billing-project 优先。运行 $ gcloud config set --help 查看有关 billing/quota_project 的更多信息。

因此,我建议将此值设置为正确的计费项目,但即便如此,他们感觉好像有些问题。

欲了解更多信息:https://cloud.google.com/sdk/gcloud/reference/beta/billing/projects/link

解决方案

我只是再次降级到 455.0.0,部署就没有问题了。

如何降级?

如果您通过 GitHub 操作进行部署:

 - name: Cloud run deploy
    uses: "google-github-actions/deploy-cloudrun@v2"
    with:
      ...
      gcloud_version: "455.0.0"
Run Code Online (Sandbox Code Playgroud)

使用 gcloud CLI:

gcloud components update --version=445.0.0
Run Code Online (Sandbox Code Playgroud)

使用 Gitlab 部署 (.gitlab-ci.yml):

image: google/cloud-sdk:455.0.0
Run Code Online (Sandbox Code Playgroud)