Fehlerbehebung – Übersicht
Diese Seite enthält allgemeine Informationen zur Fehlerbehebung für API Gateway.
„gcloud api-gateway“-Befehle können nicht ausgeführt werden
Damit Sie die gcloud api-gateway ...
-Befehle ausführen können, müssen Sie die Google Cloud CLI aktualisiert und die erforderlichen Google-Dienste aktiviert haben.
Weitere Informationen finden Sie unter Entwicklungsumgebung konfigurieren.
Der Befehl „gcloud api-gateway api-configs create“ gibt an, dass das Dienstkonto nicht vorhanden ist.
Wenn Sie den Befehl gcloud api-gateway api-configs create ...
ausführen und eine Fehlermeldung wie die folgende erhalten:
ERROR: (gcloud.api-gateway.api-configs.create) FAILED_PRECONDITION: Service Account "projects/-/serviceAccounts/service_account_email" does not exist
Führen Sie den Befehl noch einmal aus, diesmal aber mit der Option --backend-auth-service-account
, um die E-Mail-Adresse des zu verwendenden Dienstkontos anzugeben:
gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --openapi-spec=API_DEFINITION \ --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
Achten Sie darauf, dass Sie dem Dienstkonto bereits die erforderlichen Berechtigungen zugewiesen haben, wie unter Entwicklungsumgebung konfigurieren beschrieben.
Die API-Anfrage gibt den HTTP-Fehler 403 zurück
Wenn eine Anfrage an eine bereitgestellte API den HTTP-Fehler 403 an den API-Client zurückgibt, bedeutet das, dass die angeforderte URL gültig ist, der Zugriff aber aus irgendeinem Grund nicht zulässig ist.
Eine bereitgestellte API verfügt über die Berechtigungen, die mit Rollen verknüpft sind, die dem Dienstkonto, das Sie die beim Erstellen der API-Konfiguration verwendet wurde. In der Regel ist die Ursache für den HTTP-Fehler 403 dass das Dienstkonto nicht über die erforderlichen Berechtigungen für den Zugriff auf den Back-End-Dienst verfügt.
Wenn Sie die API und den Backend-Dienst im selben Google Cloud-Projekt definiert haben, muss dem Dienstkonto die Rolle Editor
oder die Rolle zugewiesen sein, die für den Zugriff auf den Backend-Dienst erforderlich ist. Wenn der Backend-Dienst beispielsweise mit Cloud Run-Funktionen implementiert ist, muss dem Dienstkonto die Rolle Cloud Function Invoker
zugewiesen sein.
API-Anfrage gibt einen HTTP 401- oder 500-Fehler zurück
Wenn eine Anfrage an eine bereitgestellte API den HTTP-Fehler 401 oder 500 an den API-Client zurückgibt, kann ein Problem mit dem Dienstkonto auftreten, das beim Erstellen der API-Konfiguration zum Aufrufen Ihres Backend-Dienstes verwendet wurde.
Eine bereitgestellte API hat die Berechtigungen, die den Rollen zugewiesen sind, die dem Dienstkonto zugewiesen sind, das Sie beim Erstellen der API-Konfiguration verwendet haben. Es wird geprüft, ob das Dienstkonto vorhanden ist und vom API Gateway verwendet werden kann, wenn die API bereitgestellt wird.
Wenn das Dienstkonto nach der Bereitstellung des Gateways gelöscht oder deaktiviert wird, kann es zu der folgenden Abfolge von Ereignissen kommen:
Unmittelbar nach dem Löschen oder Deaktivieren des Dienstkontos werden in Ihren Gateway-Logs möglicherweise HTTP-Antworten vom Typ 401 angezeigt. Wenn das Feld
response_code_details
im AbschnittjsonPayload
des Logeintrags auf"via_upstream"
festgelegt ist, ist das Löschen oder Deaktivieren des Dienstkontos die Ursache des Fehlers.Möglicherweise wird auch der HTTP-Fehler 500 ohne entsprechenden Logeintrag in den Logs des API-Gateways angezeigt. Wenn sofort keine Anfragen an Ihr Gateway eingehen nachdem das Dienstkonto gelöscht oder deaktiviert wurde, wird das HTTP-Protokoll möglicherweise nicht 401-Antworten, aber HTTP 500-Fehler ohne entsprechende API-Gateway-Logs sind ein Hinweis darauf, dass das Dienstkonto des Gateways möglicherweise nicht mehr aktiv ist.
API-Anfragen mit hoher Latenz
Wie bei Cloud Run- und Cloud Run-Funktionen API Gateway unterliegt einem Kaltstart Latenz. Wenn Ihr Gateway 15 bis 20 Minuten lang keinen Traffic erhalten hat, kommt es bei Anfragen an Ihr Gateway innerhalb der ersten 10 bis 15 Sekunden nach dem Kaltstart zu einer Latenz von 3 bis 5 Sekunden.
Wenn das Problem nach der anfänglichen Aufwärmphase weiterhin besteht, prüfen Sie die Anfrageprotokolle der Back-End-Dienste, die Sie in Ihrer API-Konfiguration konfiguriert haben. Wenn der Backend-Dienst beispielsweise mit Cloud Run-Funktionen implementiert ist, prüfen Sie die Cloud Logging-Einträge im zugehörigen Cloud Functions-Anfrageprotokoll.
Protokollinformationen können nicht angezeigt werden
Wenn Ihre API korrekt reagiert, die Protokolle jedoch keine Daten enthalten, bedeutet dies in der Regel, dass Sie nicht alle für API Gateway erforderlichen Google-Dienste aktiviert haben.
Für API Gateway müssen Sie die folgenden Google-Dienste aktivieren:
Name | Titel |
---|---|
apigateway.googleapis.com |
API Gateway API |
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
Mit dem folgenden Befehl bestätigen Sie, dass die erforderlichen Dienste aktiviert sind:
gcloud services list
Wenn die erforderlichen Dienste nicht aufgeführt sind, müssen Sie sie aktivieren:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Weitere Informationen zu den gcloud
-Diensten finden Sie unter gcloud
-Dienste.