Kontingentprojekt – Übersicht

In diesem Dokument wird das Kontingentprojekt beschrieben und erläutert, wie es ermittelt wird. Achten Sie darauf, dass Ihr Kontingentprojekt richtig festgelegt ist, um Fehler und fehlgeschlagene Anfragen an die Cloud APIs zu vermeiden.

Sie müssen ein Kontingentprojekt angeben, da jede Anfrage an eine Google Cloud API auf ein Kontingent angerechnet wird und Kontingente pro Projekt durchgesetzt werden. Weitere Informationen finden Sie unter Kontingentprojekt festlegen.

Hinweis für gcloud CLI-Nutzer: Das Kontingentprojekt wird manchmal auch als Abrechnungsprojekt bezeichnet. Das liegt daran, dass das billing_project-Flag Vorrang vor dem billing/quota_project-Attribut in Ihrer gcloud-Befehlszeilenkonfiguration hat.

Wie das Kontingentprojekt ermittelt wird

Wie das Kontingentprojekt ermittelt wird, hängt vom Typ der verwendeten API-Methode ab: ressourcenbasierte API oder clientbasierte API. In seltenen Fällen kann ein Dienst beide Arten von API-Methoden haben.

Ressourcenbasierte APIs

Bei ressourcenbasierten Cloud APIs ist das Projekt, das das Kontingent für einen API-Aufruf bereitstellt, auch das Projekt mit der Ressource, auf die zugegriffen wird. Wenn Sie beispielsweise eine Compute Engine-Instanz erstellen, müssen Sie das Projekt für diese neue Instanz angeben. Das Projekt enthält dann die neu erstellte Instanz. Wenn Sie später Vorgänge an der Compute Engine-Instanz ausführen, stellt das Projekt mit der Instanz das Kontingent für die Anfrage bereit. Dies gilt unabhängig davon, ob Sie die Google Cloud CLI, die REST API oder Clientbibliotheken verwenden.

Sie können das Kontingentprojekt, das von einer Anfrage verwendet wird, nicht in eine ressourcenbasierte API ändern. Die Anfrage verwendet immer das Projekt, das die Ressource enthält, mit der die Anfrage ausgeführt wird.

Clientbasierte APIs

Wenn eine API keine ressourcenbasierte API ist, ist sie eine clientbasierte API. Die Cloud Translation API ist beispielsweise eine häufig verwendete clientbasierte API.

Anfragen können fehlschlagen, wenn Sie eine Anfrage an eine clientbasierte API senden und das Kontingentprojekt nicht identifiziert werden kann. Das Kontingentprojekt kann auf verschiedene Arten festgelegt werden. Das Projekt wird durch Prüfung der folgenden Optionen verifiziert. Sie werden in der Reihenfolge der Priorität angezeigt:

  • In der Anfrage angegeben: Das Kontingentprojekt, das in der Anfrage angegeben wurde. Wenn Sie Clientbibliotheken verwenden, können Sie in Ihren Anfragen auch Umgebungsvariablen verwenden.

  • API-Schlüssel: Wenn Sie einen API-Schlüssel verwenden, um Anmeldedaten für eine Anfrage bereitzustellen, wird das mit dem API-Schlüssel verknüpfte Projekt als Kontingentprojekt verwendet.

  • Google Cloud CLI-Anmeldedaten: Wenn Sie die gcloud CLI zum Abrufen Ihres Zugriffstokens verwenden und sich mit Ihren Nutzeranmeldedaten bei der gcloud CLI authentifiziert haben, wird das freigegebene Projekt der gcloud CLI manchmal als Kontingentprojekt verwendet. Nicht alle clientbasierten APIs greifen auf das freigegebene Projekt zurück.

  • Dienstkonto: Wenn das Hauptkonto für den API-Aufruf ein Dienstkonto ist, auch im Wege der Identitätsübertragung, wird das mit dem Dienstkonto verknüpfte Projekt als Kontingentprojekt verwendet.

  • Mitarbeiteridentitätsföderation: Wenn das Hauptkonto für die API ein Nutzer der Mitarbeiteridentitätsföderation ist, wird das Nutzerprojekt für Workforce-Pools als Kontingentprojekt verwendet.

Wenn keine der vorherigen Prüfungen ein Kontingentprojekt ergibt, schlägt die Anfrage fehl.

Informationen zum freigegebenen Projekt der gcloud CLI für clientbasierte APIs

Wenn Sie mit der gcloud CLI eine Anfrage an eine clientbasierte API senden, ohne das Kontingentprojekt festzulegen, kann die Anfrage auf das freigegebene Projekt der gcloud CLI zurückgreifen oder die Anfrage kann möglicherweise fehlschlagen. Das freigegebene Projekt der gcloud CLI wird von allen Anfragen der gcloud CLI in allen Projekten verwendet. Wenn also viele andere gcloud CLI-Anfragen ebenfalls dieses Projekt als Kontingentprojekt verwenden, kann das Kontingent für das freigegebene Projekt vorübergehend erschöpft sein. In diesem Fall schlägt Ihre Anfrage mit einer Fehlermeldung, dass das Kontingent aufgebraucht ist, fehl.

Aktuelles Kontingentprojekt für clientbasierte APIs identifizieren

Die Methode zum Ermitteln des Kontingentprojekts hängt davon ab, wie Ihr Projekt konfiguriert ist:

  • Wenn eine API-Methode für die Verwendung einer ressourcenbasierten API konfiguriert ist, wird das Ressourcenprojekt als Kontingentprojekt für das Clientprojekt verwendet.

  • Wenn eine Überschreibung des Nutzerprojekts vorhanden ist, verwenden Sie den Befehl gcloud [command] --log-http, um ein Log zu drucken und das Kontingentprojekt zu prüfen, das im Feld x-goog-user-project angezeigt wird.

  • Wenn ein API-Schlüssel für die Authentifizierung verwendet wurde, verwenden Sie den Befehl gcloud [command] --log-http, um ein Log auszugeben und das Kontingentprojekt zu prüfen, das im Feld x-goog-api-key angezeigt wird.

Bei anderen Konfigurationen wird das Kontingentprojekt nicht in HTTP-Headern angezeigt.

Ermitteln, ob eine API ressourcen- oder clientbasiert ist

Es kann schwierig sein, den verwendeten API-Typ zu ermitteln. Aktivierung und Kontingente werden jedoch auf die gleiche Weise erzwungen. Wenn beispielsweise ein Dienstkonto aus Projekt A eine Lesemethode in Projekt B aufruft und in keinem Projekt die API aktiviert ist, gibt die Fehlermeldung API not enabled an, welches Projekt auf die Aktivierung geprüft wird. Das auf die Aktivierung geprüfte Projekt ist das gleiche, das auf das Ratenkontingent geprüft wird.

Nächste Schritte