Dienstkontingente verwalten

Auf dieser Seite wird beschrieben, wie Sie alle Kontingentmesswerte und -beschränkungen in einem Google Cloud-Projekt für einen bestimmten Dienst anzeigen und die Kontingentnutzung für diesen Dienst mithilfe einer Kontingentüberschreibung begrenzen. Mithilfe von Service Usage können Sie das Kontingent für Ihre Projekte für jeden Dienst verwalten, einschließlich öffentlicher Google Cloud-Dienste und privater Dienste, die mit Cloud Endpoints erstellt wurden. Weitere Informationen zu den Unterschieden zwischen öffentlichen und privaten APIs und Diensten finden Sie unter Öffentliche und private Dienste.

Für die meisten praktischen Anwendungsfälle ist die Verwendung der Google Cloud Console die einfachste Möglichkeit, Kontingente zu verwalten. Wenn Sie Programme unter Verwendung der Service Usage API schreiben müssen, empfehlen wir Ihnen, eine der von uns bereitgestellten Clientbibliotheken zu verwenden. Um die API auszuprobieren, ohne gleich eine komplette Entwicklungsumgebung für Anwendungen einzurichten, können Sie die Anleitung in diesem Dokument und den Befehl gcurl verwenden. Einige der in dieser Anleitung verlinkten Ressourcen stehen ggf. nur auf Englisch zur Verfügung.

Hinweis

Führen Sie alle in der Anleitung Erste Schritte aufgeführten Schritte aus, um die Beispiele auf dieser Seite zu verwenden. Diese Schritte umfassen die Definition von gcurl, einem authentifizierten Alias für den Standardbefehl curl, und die Definition der Umgebungsvariablen PROJECT_NUMBER.

Machen Sie sich unbedingt mit dem Dienstkontingentmodell vertraut, um die in dieser Anleitung verwendete Terminologie besser zu verstehen.

Dienstkontingent anzeigen

Verwenden Sie den folgenden Befehl, um alle Kontingentmesswerte und -beschränkungen anzuzeigen, die für einen bestimmten Verbraucher eines Dienstes gelten:

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

Der Aufruf antwortet mit einer Liste von Messwerten, die vom Dienst definiert wurden und jeweils eine Liste der Grenzwerte für die für diesen Nutzer geltenden Messwerte, den Werten für diese Limits und etwaigen Überschreibungen liefern. Sie sehen hier einen Teil einer Beispielantwort:


{
  "metrics": [
    ...
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus",
      "displayName": "CPUs",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fzone",
          "unit": "1/{project}/{zone}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/cpus",
          "quotaBuckets": [
            {
              "effectiveLimit": "-1",
              "defaultLimit": "-1"
            }
          ]
        },
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion",
          "unit": "1/{project}/{region}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/cpus",
          "quotaBuckets": [
            {
              "effectiveLimit": "24",
              "defaultLimit": "24"
            },
            {
              "effectiveLimit": "72",
              "defaultLimit": "72",
              "dimensions": {
                "region": "asia-northeast1"
              }
            },

            ...

            {
              "effectiveLimit": "72",
              "defaultLimit": "72",
              "dimensions": {
                "region": "australia-southeast1"
              }
            }
          ]
        }
      ],
      "metric": "compute.googleapis.com/cpus",
      "unit": "1"
    },
    ...
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways",
      "displayName": "External VPN gateways",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
          "unit": "1/{project}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/external_vpn_gateways",
          "quotaBuckets": [
            {
              "effectiveLimit": "15",
              "defaultLimit": "15"
            }
          ]
        }
      ],
      "metric": "compute.googleapis.com/external_vpn_gateways",
      "unit": "1"
    },
    ...

Jeder Messwert in der Antwort hat ein name-Feld. Verwenden Sie den name in der URL, um die Kontingenteinstellungen nur für diesen Messwert und nicht für alle Messwerte zu überprüfen. In dieser Anleitung speichert die Umgebungsvariable METRIC_RESOURCE_NAME den Ressourcennamen des Kontingentmesswerts:

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

Da ein bestimmter Messwertressourcenname angegeben wird, gibt der Aufruf nur die Informationen für diesen Messwert zurück:

{
  "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways",
  "displayName": "External VPN gateways",
  "consumerQuotaLimits": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
      "unit": "1/{project}",
      "isPrecise": true,
      "metric": "compute.googleapis.com/external_vpn_gateways",
      "quotaBuckets": [
        {
          "effectiveLimit": "15",
          "defaultLimit": "15"
        }
      ]
    }
  ],
  "metric": "compute.googleapis.com/external_vpn_gateways",
  "unit": "1"
}

In ähnlicher Weise hat jedes Limit innerhalb eines Messwerts ein name-feld. Verwenden Sie den name in der URL, um die Kontingenteinstellungen für genau dieses Limit für diesen Messwert und nicht für alle Limits für einen Messwert oder alle Messwerte zu überprüfen. In dieser Anleitung speichert die Umgebungsvariable LIMIT_RESOURCE_NAME den Ressourcennamen des Kontingentlimits:

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

Wenn ein bestimmtes Limit angegeben wird, gibt der Aufruf nur die Informationen für dieses Limit zurück:

{
  "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
  "unit": "1/{project}",
  "isPrecise": true,
  "metric": "compute.googleapis.com/external_vpn_gateways",
  "quotaBuckets": [
    {
      "effectiveLimit": "15",
      "defaultLimit": "15"
    }
  ]
}

Überschreibung eines Verbraucherkontingents erstellen

Der Inhaber eines Projekts kann eine Überschreibung durch den Nutzer auf ein bestimmtes Kontingentlimit für dieses Projekt anwenden, um die Gesamtgröße des Kontingents zu verringern, den der Nutzer auf dieses Limit anrechnen kann.

Beachten Sie, dass eine Überschreibung durch den Nutzer das verfügbare Kontingent nicht über das hinaus erhöhen kann, was durch den Dienststandard und vorhandene Überschreibungen durch andere Parteien (z. B. den Dienstinhaber oder den Kontingentadministrator einer Organisation) zulässig ist. Verwenden Sie zum Erhöhen des verfügbaren Kontingents die Option "Kontingente bearbeiten" auf der Kontingent-Hauptseite oder fragen Sie den Organisationsadministrator nach einer Kontingenterhöhung.

Um ein zu überschreibendes Limit zu identifizieren, verwenden Sie zuerst eine der vorherigen Methoden, um das jeweilige Kontingentlimit zu ermitteln. Verwenden Sie dann das Namensfeld des Kontingentlimits, um eine neue Überschreibung durch den Nutzer für dieses Limit zu erstellen. Das folgende Beispiel bezieht sich auf das projektspezifische Limit des Kontingentmesswerts „Externe VPN-Gateways” des Compute Engine-Dienstes:

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

Wenn der Aufruf erfolgreich ist, wird eine Vorgangs-ID zurückgegeben, die die laufende Arbeit auf dem Server darstellt, wenn sich die Kontingentänderung auf Backend-Systeme ausweitet:

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

Um den Fortschritt des Vorgangs zu überprüfen, verwenden Sie einfach dessen name:

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

Wenn der Vorgang erfolgreich ist, enthält die Antwortnachricht done: true und die neu erstellte Überschreibungsressource. Wenn der Vorgang fehlschlägt, enthält die Antwortnachricht done: true. Sie enthält allerdings Fehlerdetails anstelle der Ressource.

Um zu prüfen, ob die Überschreibung erstellt wurde, listen Sie alle Nutzerüberschreibungen für das Limit auf:

gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides"

Die neu erstellte Überschreibung sollte in der Liste angezeigt werden:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl",
      "overrideValue": "14"
    }
  ]
}

Regionale oder zonale Kontingentüberschreibungen erstellen

Einige Kontingentlimits gelten pro Region oder Zone. Dies wird durch das Vorhandensein von {region} oder {zone} im Feld unit des Limits angegeben. Beispielsweise wird ein Limit mit der Einheit "1/{project}/{region}" pro Region erzwungen. Wenn Sie eine Überschreibung auf dieses Limit anwenden, ändert sich das Basiskontingent für jede Region oder Zone. Wenn Sie das Kontingent nur für eine bestimmte Region oder Zone ändern möchten, fügen Sie beim Erstellen der Überschreibung eine Kontingentdimension hinzu. Verwenden Sie dazu das Feld dimensions. Eine regionale Überschreibung für ein regionales Compute Engine-Kontingentlimit erstellen Sie beispielsweise so:

REGIONAL_LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion"
gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides" -d '{"overrideValue": "65", "dimensions": {"region": "southamerica-east1"} }'

Um zu prüfen, ob die regionale Überschreibung erstellt wurde, listen Sie alle Nutzerüberschreibungen für das Limit auf:

gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides"

Die neu erstellte regionale Überschreibung sollte in der Liste angezeigt werden:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/consumerOverrides/Cg1RdW90YU92ZXJyaWRlGhwKBnJlZ2lvbhISc291dGhhbWVyaWNhLWVhc3Qx",
      "overrideValue": "65",
      "dimensions": {
        "region": "southamerica-east1"
      }
    }
  ]
}

Überschreibung eines Verbraucherkontingents aktualisieren

Der Inhaber eines Projekts kann auch den Wert einer vorhandenen Überschreibung durch den Nutzer für das Projekt ändern.

Angenommen, ein vorheriger Erstellungsaufruf hat eine Überschreibung mit einem name-Feld wie dem folgenden zurückgegeben:

name: "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"

Verwenden Sie dann diesen Namen, um die zu aktualisierende Überschreibung folgendermaßen zu identifizieren:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"
gcurl "https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME}" -X PATCH -d '{"overrideValue": "13"}'

Wenn der Aufruf erfolgreich ist, wird eine Vorgangs-ID zurückgegeben, die die laufende Arbeit auf dem Server darstellt, wenn sich die Kontingentänderung auf Backend-Systeme ausweitet:

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

Um den Fortschritt des Vorgangs zu überprüfen, verwenden Sie einfach dessen name:

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

Wenn der Vorgang erfolgreich ist, enthält die Antwortnachricht done: true und die aktualisierte Überschreibungsressource. Wenn der Vorgang fehlschlägt, enthält die Antwortnachricht done: true. Sie enthält allerdings Fehlerdetails anstelle der aktualisierten Ressource.

Um zu prüfen, ob die Überschreibung aktualisiert wurde, listen Sie alle Nutzerüberschreibungen für das Limit auf:

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

Die Überschreibung sollte nun in der Liste mit dem aktualisierten Wert angezeigt werden:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl",
      "overrideValue": "13"
    }
  ]
}

Überschreibung eines Verbraucherkontingents löschen

Der Inhaber eines Projekts kann auch eine Überschreibung durch den Nutzer aus dem Projekt entfernen.

Angenommen, ein vorheriger Erstellungsaufruf hat eine Überschreibung mit einem name-Feld wie dem folgenden zurückgegeben:

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

Führen Sie die folgende Sequenz aus, um die Überschreibung zu löschen:

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

Um zu prüfen, ob die Überschreibung gelöscht wurde, listen Sie alle Nutzerüberschreibungen für das Limit auf:

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

Die gelöschte Überschreibung sollte nun nicht mehr in der Liste angezeigt werden.

Große Kontingentänderungen erzwingen

Wenn eine Änderung der Kontingentüberschreibung dazu führen würde, dass das erzwungene Kontingent um mehr als 10 % sinkt, wird der Anruf als Sicherheitsmaßnahme abgelehnt, um zu vermeiden, dass das Kontingent versehentlich zu schnell sinkt. Verwenden Sie das Flag force, um diese Einschränkung zu ignorieren: Hier sehen Sie zum Beispiel einen Aufruf vom Typ „create“, der das Flag „force“ verwendet.

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