Fehlerbehebung – Übersicht

Auf dieser Seite finden Sie allgemeine Informationen zur Fehlerbehebung für das API-Gateway.

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

Zum Ausführen der gcloud api-gateway ...-Befehle müssen Sie das Cloud SDK 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 im folgenden Format 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, aber enthalten Sie die Option --backend-auth-service-account, um die E-Mail-Adresse des Dienstkontos, das verwendet werden soll, 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.

API-Anfrage gibt einen HTTP 403-Fehler zurück

Wenn eine Anfrage an eine bereitgestellte API den HTTP 403-Fehler an den API-Client zurückgibt, bedeutet dies, dass die angeforderte URL gültig ist, der Zugriff aber aus irgendeinem Grund unzulässig ist.

Eine bereitgestellte API hat die Berechtigungen, die den Rollen zugeordnet sind, die dem Dienstkonto zugewiesen wurden, das Sie beim Erstellen der API-Konfiguration verwendet haben. Der Grund für den HTTP 403-Fehler ist in der Regel, 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 in derselben Google Cloud Platform (GCP) definiert haben, prüfen Sie, ob dem Dienstkonto die Rolle Editor oder die für den Zugriff auf den Back-End-Dienst erforderliche Rolle zugewiesen ist. Wenn der Back-End-Dienst beispielsweise mit Cloud Functions implementiert wird, prüfen Sie, ob dem Dienstkonto die Rolle Cloud Function Invoker zugewiesen ist.

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 Back-End-Dienstes verwendet wurde.

Eine bereitgestellte API hat die Berechtigungen, die den Rollen zugeordnet sind, die dem Dienstkonto zugewiesen wurden, das Sie beim Erstellen der API-Konfiguration verwendet haben. Das Dienstkonto wird überprüft, ob beide vorhanden sind 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 die folgende Abfolge von Ereignissen auftreten:

  1. Unmittelbar nach dem Löschen oder Deaktivieren des Dienstkontos werden in Ihren Gateway-Logs möglicherweise 401-HTTP-Antworten angezeigt. Wenn das Feld response_code_details in der jsonPayload des Logeintrags auf "via_upstream" gesetzt ist, bedeutet dies, dass das Löschen oder Deaktivieren des Dienstkontos die Fehlerursache ist.

  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.

Loginformationen können nicht angezeigt werden

Wenn die API richtig reagiert, die Logs 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.