Risoluzione degli errori ricevuti in risposta

Questa pagina descrive come risolvere i problemi relativi agli errori che ricevi in una risposta a una richiesta alla tua API.

Upstream backend unavailable

Se ricevi il codice di errore 14 e il messaggio upstream backend unavailable, questo indica che Extensible Service Proxy (ESP) non riesce a raggiungere il backend del servizio. Verifica quanto segue:

  • Assicurati che il servizio di backend sia in esecuzione. Il modo in cui farlo dipende dal backend.

  • È specificata la porta dell'indirizzo IP corretta del servizio di backend:
    • Per GKE, controlla il valore del flag ESP --backend (l'opzione breve è -a) nel file manifest del deployment (spesso chiamato deployment.yaml).
    • Per Compute Engine, controlla il valore del flag ESP --backend (l'opzione breve è -a) nel comando docker run.

reset reason: connection failure

Se ricevi il codice HTTP 503 o il codice gRPC 14 e il messaggio upstream connect error or disconnect/reset before headers. reset reason: connection failure, significa che ESPv2 non riesce a raggiungere il backend del servizio.

Per risolvere il problema, controlla i seguenti elementi.

Indirizzo backend

ESPv2 deve essere configurato con l'indirizzo backend corretto. I problemi più comuni includono:

  • Lo schema dell'indirizzo di backend deve corrispondere al tipo di applicazione di backend. I backend OpenAPI devono essere http:// e i backend gRPC devono essere grpc://.
  • Per ESPv2 di cui è stato eseguito il deployment su Cloud Run, lo schema dell'indirizzo backend deve essere https:// o grpcs://. s indica a ESPv2 di configurare TLS con il backend.

Ricerca DNS

Per impostazione predefinita, ESPv2 tenta di risolvere i nomi di dominio in indirizzi IPv6. Se la risoluzione IPv6 non va a buon fine, ESPv2 esegue il failover sugli indirizzi IPv4.

Per alcune emittenti, il meccanismo di fallback potrebbe non funzionare come previsto. In alternativa, puoi forzare ESPv2 a utilizzare indirizzi IPv4 tramite il flag --backend_dns_lookup_family.

Questo errore è comune se configuri un connettore VPC serverless per ESPv2 di cui è stato eseguito il deployment su Cloud Run. I VPC non supportano il traffico IPv6.

API is not enabled for the project

Se hai inviato una chiave API nella richiesta, un messaggio di errore come "API my-api.endpoints.example-project-12345.cloud.goog non è abilitata per il progetto" indica che la chiave API è stata creata in un progetto Google Cloud diverso da quello dell'API. Per risolvere il problema, puoi creare la chiave API nello stesso progetto Google Cloud a cui è associata l'API oppure puoi attivare l'API nel progetto Google Cloud in cui è stata creata la chiave API.

Service control request failed with HTTP response code 403

Se ricevi il codice di errore 14 e il messaggio Service control request failed with HTTP response code 403, significa che l'API Service Control (servicecontrol.googleapis.com) non è abilitata nel progetto.

  1. Consulta la sezione Controllo dei servizi richiesti per assicurarti che tutti i servizi richiesti da Endpoints e ESP siano abilitati nel tuo progetto.

  2. Consulta la sezione Controllo delle autorizzazioni richieste per assicurarti che il account di servizio associato all'istanza che esegue ESP disponga di tutte le autorizzazioni richieste.

Method doesn't allow unregistered callers

ESP risponde con l'errore Method doesn't allow unregistered callers quando hai specificato allow_unregistered_calls: false nel file di configurazione dell'API gRPC, ma la richiesta all'API non ha una chiave API assegnata a un parametro di query denominato key.

Se devi generare una chiave API per effettuare chiamate alla tua API, consulta Crea una chiave API.

Method does not exist

La risposta, Method does not exist, indica che il metodo HTTP (GET, POST o altro) nel percorso URL specificato non è stato trovato. Per risolvere il problema, confronta la configurazione del servizio che hai eseguito il deployment per assicurarti che il nome del metodo e il percorso dell'URL che invii nella richiesta corrispondano:

  1. Nella console Google Cloud , vai alla pagina Servizi endpoint per il tuo progetto.

    Vai alla pagina Servizi endpoint

  2. Se hai più di un'API, seleziona quella a cui hai inviato la richiesta.

  3. Fai clic sulla scheda Cronologia deployment.

  4. Seleziona l'ultimo deployment per visualizzare la configurazione del servizio.

Transport is closing

Se ricevi il codice di errore 13 e il messaggio transport is closing, significa che il fornitore di servizi email non è raggiungibile.

Controlla i log degli errori del fornitore di servizi email. La procedura dipende dal backend. Vai ai seguenti argomenti per ulteriori informazioni:

Risposte impreviste

Se la risposta HTTP sembra binaria, è possibile che la richiesta raggiunga l'API utilizzando la porta HTTP2 quando intendevi utilizzare la porta HTTP1.

Controlla le opzioni di configurazione delle porte per ESP. Poiché i flag per i formati brevi, -p (per HTTP1) e -P (per HTTP2), sono simili, ti consigliamo di utilizzare i flag per i formati lunghi: --http_port per HTTP1 e --http2_port per HTTP2.

Una configurazione errata del backend ESP potrebbe anche causare risposte impreviste. Assicurati che il flag di backend (-a o --backend) sia impostato su un URL gRPC come --backend=grpc://127.0.0.1:8081.

Per maggiori dettagli sui flag ESP, vedi Opzioni di avvio ESP.

Controllare i log di Cloud Logging

Per utilizzare i log di Cloud Logging per risolvere i problemi relativi agli errori di risposta:

  1. Nella console Google Cloud , vai alla pagina Logging.

    Vai alla pagina Esplora log

  2. Nella parte superiore della pagina, seleziona il Google Cloud progetto.

  3. Utilizzando il menu a discesa a sinistra, seleziona API prodotta > [YOUR_SERVICE_NAME].

  4. Regola l'intervallo di tempo finché non vedi una riga che mostra l'errore di risposta.

  5. Espandi il payload JSON e cerca error_cause.

    • Se error_cause è impostato su application, significa che c'è un problema nel tuo codice.

    • Se il error cause è diverso e non riesci a risolvere il problema, esporta il log e includilo in qualsiasi comunicazione con Google.

Vai ai seguenti argomenti per ulteriori informazioni: