Verbraucherkontingent 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 die Anleitung in diesem Dokument und den Befehl curl verwenden.

Dienstkontingent anzeigen

Für diese Anleitung verwenden wir ein Projekt mit dem Namen consumer-project-id und einen Dienst mit dem Namen myservice.appspot.com. Setzen Sie in jedem gcurl-Befehl Ihren eigenen Dienst und Ihr Nutzerprojekt ein.

Führen Sie zum Verwenden von gcurl zuerst den folgenden alias-Befehl mit Authentifizierungstoken aus:

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

Weitere Informationen finden Sie unter Einstieg.

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/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics

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",
            }
          ]
        }
      ],
    }
  ]
}

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/{name}

In ähnlicher Weise hat jedes Limit innerhalb eines Messwerts 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/{name}

Überschreibung durch den Ersteller 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.

Um ein Limit zu identifizieren, verwenden Sie zuerst eine der oben genannten 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/{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"
}

Verwenden Sie den Namen des Vorgangs, um dessen Fortschritt zu überprüfen:

gcurl https://serviceconsumermanagement.googleapis.com/v1/{name}

Wenn dieser Aufruf mit einer Nachricht antwortet, die „done”:true enthält, ist der Vorgang abgeschlossen. Wenn der Vorgang fehlgeschlagen ist, 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 sollte nun das zusätzliche Feld „producerOverride“ enthalten.

Große Kontingentänderungen erzwingen

Wenn eine Ü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 "force"-Flag, um diese Einschränkung zu ignorieren:

gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/{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 Standortfeld:

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