Nutzerkontingent verwalten

Auf dieser Seite wird beschrieben, wie Sie mithilfe der Service Consumer Management API die Kontingentbeschränkungen anzeigen und überschreiben, die für einzelne Nutzer Ihres Dienstes gelten.

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

Für die Programmierung unter Einbindung der Service Infrastructure API empfehlen wir die Verwendung einer der von uns bereitgestellten Clientbibliotheken. Um die API auszuprobieren, ohne gleich eine komplette Entwicklungsumgebung für Anwendungen einzurichten, können Sie der Anleitung in diesem Dokument folgen und den Befehl curl verwenden.

Dienstkontingent anzeigen

So rufen Sie Messwerte und Limits für Dienstkontingente auf:

  1. Führen Sie den folgenden alias-Befehl mit dem Authentifizierungstoken aus, um gcurl zu verwenden:

    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    

    Weitere Informationen finden Sie unter Service Usage API aktivieren.

  2. Verwenden Sie die folgende Methode, um alle Kontingentlimits für alle Messwerte anzuzeigen, die für einen bestimmten Nutzer gelten:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/services/SERVICE_NAME/projects/PROJECT_ID/consumerQuotaMetrics
    

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: der Name Ihres Dienstes.
    • PROJECT_ID: die ID des Nutzerprojekts, das Sie interessiert.

    Dieser 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 ein Beispiel:

    {
      "metrics": [
        {
          "name": "services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests",
          "metric": "airport_requests",
          "displayName": "Airport Requests",
          "consumerQuotaLimits": [
            {
              "name": "services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests/limits/%2Fmin%2Fproject",
              "metric": "airport_requests",
              "unit": "1/min/{project}",
              "quotaBuckets": [
                {
                  "effectiveLimit": "5",
                  "defaultLimit": "5",
                }
              ]
            }
          ],
        }
      ]
    }
    
  3. Jeder Messwert in der Antwort hat ein Namensfeld. Verwenden Sie den Namen in der URL, um die Kontingenteinstellungen nur für diesen Messwert und nicht für alle Messwerte zu überprüfen:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/METRIC_NAME
    

    Ersetzen Sie METRIC_NAME durch den vollständig qualifizierten Namen des Messwerts. Beispiel:

    services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests

  4. Jedes Limit innerhalb eines Messwerts hat ein Namensfeld. Verwenden Sie den Namen 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:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME
    

    Ersetzen Sie LIMIT_NAME durch den vollständig qualifizierten Namen des Limits. Beispiel:

    services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests/limits/%2Fmin%2Fproject

Überschreibung durch den Hersteller anwenden

Der Inhaber oder Administrator eines Dienstes kann eine Überschreibung durch den Ersteller auf ein bestimmtes Limit für einen bestimmten Nutzer anwenden und eine Kontingenterhöhung für dieses Limit gewähren.

  1. Um ein Limit zu identifizieren, verwenden Sie zuerst eine der vorherigen Methoden, um das jeweilige Kontingentlimit zu ermitteln, und verwenden Sie das Namensfeld, um eine Überschreibung durch den Ersteller darauf anzuwenden:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME/producerOverrides -d '{"override": {"override_value": "12345"} }'
    

    Mit diesem Aufruf kann eine neue Überschreibung angewendet oder eine vorhandene Überschreibung auf einen neuen Wert aktualisiert werden. Verwenden Sie „-1” als Überschreibungswert, um ein unbegrenztes Kontingent für ein Limit zu gewähren.

    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 ausbreitet:

    {
      "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
    }
    
  2. Verwenden Sie den Namen des Vorgangs, um dessen Fortschritt zu überprüfen:

    gcurl https://serviceconsumermanagement.googleapis.com/v1/OPERATION_NAME
    

    Wenn dieser Aufruf mit einer Nachricht antwortet, die „done”:true enthält, ist der Vorgang abgeschlossen. Wenn der Vorgang fehlschlägt, enthält die Meldung Fehlerdetails.

    Sie können auch überprüfen, ob eine Änderung vorgenommen wurde, indem Sie den ursprünglichen „get“-Aufruf für das bestimmte Limit wiederholen. Das Limit muss jetzt ein zusätzliches producerOverride-Feld haben.

Große Kontingentänderungen erzwingen

Wenn eine Überschreibung dazu führen würde, dass das erzwungene Kontingent um mehr als 10 % sinkt, wird der Aufruf als Sicherheitsmaßnahme abgelehnt, um zu vermeiden, dass das Kontingent versehentlich zu schnell sinkt. Verwenden Sie das "force"-Flag, um diese Einschränkung zu ignorieren:

gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME/producerOverrides -d '{"override": {"override_value": "0"}, "force": true}'

Regionale oder zonale Kontingentüberschreibungen anwenden

Einige Kontingentlimits werden pro Region oder pro Zone durchgesetzt. Dies wird durch das Vorhandensein von /{region} oder /{zone} in der Einheit des Limits angezeigt.

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, verwenden Sie das Feld „Standort“:

gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME/producerOverrides -d '{"override": {"override_value": "135", "dimensions": {"region": "asia-south1"} } }'