Fehlerbehebung – Übersicht

Diese Seite enthält allgemeine Informationen zur Fehlerbehebung für API Gateway.

„gcloud api-gateway“-Befehle können nicht ausgeführt werden

Zum Ausführen der gcloud api-gateway ...-Befehle 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 einen Fehler in der Form 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, fügen Sie diesmal aber die Option --backend-auth-service-account hinzu, um die E-Mail-Adresse des zu verwendenden Dienstkontos explizit 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

Prüfen Sie, ob 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 einen HTTP 403-Fehler an den API-Client zurückgibt, bedeutet dies, dass die angeforderte URL zwar gültig, aber aus irgendeinem Grund nicht zulässig ist.

Eine bereitgestellte API hat die Berechtigungen, die mit Rollen verknüpft sind, die dem Dienstkonto zugewiesen wurden, das Sie beim Erstellen der API-Konfiguration verwendet haben. In der Regel liegt der HTTP-Fehler 403 daran, dass das Dienstkonto nicht die erforderlichen Berechtigungen für den Zugriff auf den Back-End-Dienst hat.

Wenn Sie die API und den Back-End-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 Back-End-Dienst erforderlich ist. Wenn der Back-End-Dienst beispielsweise mit Cloud Functions 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 mit Rollen verknüpft sind, die dem Dienstkonto zugewiesen wurden, das Sie beim Erstellen der API-Konfiguration verwendet haben. Es wird geprüft, ob das Dienstkonto beide vorhanden ist und vom API-Gateway bei Bereitstellung der API verwendet werden kann.

Wenn das Dienstkonto nach der Bereitstellung des Gateways gelöscht oder deaktiviert wird, kann die folgende Abfolge von Ereignissen auftreten:

  1. Unmittelbar nach dem Löschen oder Deaktivieren des Dienstkontos werden möglicherweise 401-HTTP-Antworten in Ihren Gateway-Logs angezeigt. Wenn das Feld response_code_details in den jsonPayload des Logeintrags auf "via_upstream" gesetzt ist, weist dies darauf hin, dass der Fehler durch Löschen oder Deaktivieren des Dienstkontos verursacht wird.

  2. Möglicherweise wird auch der HTTP-Fehler 500 ohne entsprechenden Logeintrag in den Logs des API-Gateways angezeigt. Wenn unmittelbar nach dem Löschen oder Deaktivieren des Dienstkontos keine Anfragen an Ihr Gateway gesendet werden, werden die HTTP 401-Antworten möglicherweise nicht angezeigt. Die 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 Cloud Run und Cloud Functions unterliegt auch API Gateway einer Kaltstartlatenz. Wenn Ihr Gateway 15 bis 20 Minuten lang keinen Traffic empfangen hat, haben Anfragen, die innerhalb der ersten 10 bis 15 Sekunden des Kaltstarts an das Gateway gesendet werden, eine Latenz von 3 bis 5 Sekunden.

Wenn das Problem nach der anfänglichen Aufwärmphase weiterhin besteht, prüfen Sie die Anfragelogs der Back-End-Dienste, die Sie in der API-Konfiguration konfiguriert haben. Wenn der Back-End-Dienst beispielsweise mit Cloud Functions implementiert ist, prüfen Sie die Cloud Logging-Einträge des zugehörigen Anfragelogs von Cloud Function.

Loginformationen 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.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Weitere Informationen zu den gcloud-Diensten finden Sie unter gcloud-Dienste.