管理服务配额

本页介绍如何查看特定服务在 Google Cloud 项目上的所有配额指标和限制,以及如何使用配额替换值来限制该服务的配额使用量。您可以使用 Service Usage 来管理任何服务项目的配额,包括公共 Google Cloud 服务和使用 Cloud Endpoints 创建的专用服务。如需详细了解公共和专用 API 和服务之间的差异,请参阅公共服务和专用服务

确保熟悉服务配额模型,以更好地理解本教程中使用的术语。

对于大多数操作用例,管理配额的最简单方法是使用 Google Cloud Console。如果您需要针对 Service Usage API 进行编程,则可以使用我们提供的某一客户端库。如需试用 API,您可以按照本指南中的说明进行操作,并使用 curl 命令测试 API,而无需设置完整的应用开发环境。

准备工作

如需管理服务配额,您需要:

在本教程中,我们将使用环境变量 PROJECT_NUMBER 设置您的项目编号,并使用服务 serviceusage.googleapis.com 作为感兴趣的服务。

如需在您的项目中快速找到 ID 为 PROJECT_ID 的项目编号,请使用以下命令:

PROJECT_NUMBER=`gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)"`

显示服务配额

如需查看适用于服务上特定使用方的所有配额指标和限制,请使用以下命令:

gcurl https://serviceusage.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics

调用会返回服务定义的指标列表作为响应,每个响应都包含针对这些指标的限制列表,适用于使用方、这些限制的值以及任何替换值。以下是示例响应:

{
  "metrics": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests",
      "displayName": "Default requests",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject",
          "unit": "1/min/{project}",
          "metric": "serviceusage.googleapis.com/default_requests",
          "quotaBuckets": [
            {
              "effectiveLimit": "240",
              "defaultLimit": "240"
            }
          ]
        }
      ],
      "metric": "serviceusage.googleapis.com/default_requests"
    },
    {
      "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fmutate_requests",
      "displayName": "Mutate requests",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fmutate_requests/limits/%2Fmin%2Fproject",
          "unit": "1/min/{project}",
          "metric": "serviceusage.googleapis.com/mutate_requests",
          "quotaBuckets": [
            {
              "effectiveLimit": "120",
              "defaultLimit": "120"
            }
          ]
        }
      ],
      "metric": "serviceusage.googleapis.com/mutate_requests"
    }
  ]
}

响应中的每个指标都有一个 name 字段;如需仅针对该指标检查配额设置而不针对所有指标,请在网址中使用其 name。在本教程中,环境变量 METRIC_RESOURCE_NAME 存储配额指标资源名称:

METRIC_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests"
gcurl https://serviceusage.googleapis.com/v1beta1/${METRIC_RESOURCE_NAME}

同样,指标中的每个限制都有一个 name字段;要仅针对该指标的限制检查配额设置而不针对某个指标或所有指标的所有限制,请在网址中使用其 name。在本教程中,环境变量 LIMIT_RESOURCE_NAME 存储配额限制资源名称:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject"
gcurl https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}

创建使用方配额替换值

项目的所有者可以将使用方替换值应用于针对该项目的特定配额限制,以减少使用方可以针对该限制为配额总量支付的费用。

请注意,使用方替换值不能将可用配额增加到超出服务默认值和其他方(例如服务所有者或组织的配额管理员)现有的所有替换值允许的范围。如需增加可用配额,请使用主配额页面上的“修改配额”选项,或要求组织管理员进行配额提升。

如需标识要替换的限制,请首先使用上述方法之一找到相关配额限制,然后使用其名称字段在该限制的替换值集合中创建新的使用方替换值。以下示例针对特定的配额限制:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject"
gcurl https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides -d '{"overrideValue": "220"}'

如果调用成功,则在配额更改传播到后端系统时,它将返回一个操作标识符,代表服务器上正在进行的工作:

{
  "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}

如需检查操作的进度,只需使用其 name

OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl https://serviceusage.googleapis.com/v1/${OPERATION_NAME}

如果操作成功,则响应消息将包含 done: true,并包含新创建的替换资源。如果操作失败,则响应消息包括 done: true,但不包含资源而是包含错误详细信息。

您还可以通过在特定限制上重复原始的获取调用来检查是否已应用更改。现在,该限制应具有一个附加的 consumerOverride 字段。

创建区域或地区配额替换值

有些配额限制是按区域或地区强制实施的;这由限制的 unit 字段中存在的 {region}{zone} 来指示。例如,按区域强制实施以 "1/{project}/{region}" 为单位的限制。对此类限制应用替换值会更改每个区域或地区的基本配额。如需仅更改特定区域或地区的配额,请在创建替换值时使用 dimensions 字段添加配额维度。例如,在 Cloud ML 区域配额限制上创建区域替换值,如下所示:

REGIONAL_LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/ml.googleapis.com/consumerQuotaMetrics/ml.googleapis.com%2Foptimizer_management_requests"
gcurl https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides -d '{"overrideValue": "550", "dimensions": {"region": "asia-south1"} }'

更新使用方配额替换值

项目的所有者还可以更改项目上现有使用方替换值的值。

例如,假设先前的 create 调用返回了一个带有 name 字段的替换值,如下所示:

name: "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"

然后,使用该名称标识要更新的替换值,如下所示:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"
gcurl https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME} -X PATCH -d '{"overrideValue": "230"}'

如果调用成功,则在配额更改传播到后端系统时,它将返回一个操作标识符,代表服务器上正在进行的工作:

{
  "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}

如需检查操作的进度,只需使用其 name

OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl https://serviceusage.googleapis.com/v1/${OPERATION_NAME}

如果操作成功,则响应消息将包含 done: true,并包含更新的替换资源。如果操作失败,则响应消息包括 done: true,但不包括更新的资源而是包含错误详细信息。

删除使用方配额替换值

项目的所有者还可以从项目中移除使用方替换值。

例如,假设先前的 create 调用返回了一个带有 name 字段的替换值,如下所示:

name: "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"

如需删除替换值,请按以下顺序发出命令:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"
gcurl https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME} -X DELETE

强制更改大幅配额

如果更改任何配额都将导致强制配额减少超过 10%,则将拒绝该调用,这是一种安全措施,可避免意外地过快降低配额。如需忽略此限制,请使用 force 标志。例如,这是一个带有 force 标志的创建调用:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject"
gcurl https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides?force=true -d '{"overrideValue": "40"}'