Panoramica della risoluzione dei problemi
Questa pagina fornisce informazioni generali sulla risoluzione dei problemi per API Gateway.
Impossibile eseguire "gcloud api-gateway" comandi
Per eseguire i comandi gcloud api-gateway ...
, devi aver aggiornato la classe
Google Cloud CLI e abilitato i servizi Google necessari.
Per saperne di più, consulta Configurazione dell'ambiente di sviluppo.
Comando "gcloud api-gateway api-configs create" dice che l'account di servizio non esiste
Se esegui il comando gcloud api-gateway api-configs create ...
e ricevi un messaggio di errore nel seguente formato:
ERROR: (gcloud.api-gateway.api-configs.create) FAILED_PRECONDITION: Service Account "projects/-/serviceAccounts/service_account_email" does not exist
Esegui di nuovo il comando, ma questa volta includi l'opzione --backend-auth-service-account
per
specificare esplicitamente l'indirizzo email
account di servizio per utilizzare:
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
Assicurati di aver già assegnato le autorizzazioni necessarie all'account di servizio come descritto in Configurazione dell'ambiente di sviluppo.
La richiesta API restituisce un errore HTTP 403
Se una richiesta a un'API di cui è stato eseguito il deployment restituisce un errore HTTP 403 al client API, significa che l'URL richiesto è valido, ma l'accesso è vietato per qualche motivo.
Un'API di cui è stato eseguito il deployment dispone delle autorizzazioni associate ai ruoli concessi account di servizio che utilizzata quando hai creato la configurazione API. In genere, il motivo dell'errore HTTP 403 è che l'account di servizio non dispone delle autorizzazioni necessarie per accedere al servizio di backend.
Se hai definito l'API e il servizio di backend nello stesso progetto Google Cloud, assicurati che all'account di servizio sia stato assegnato il ruolo Editor
o il ruolo necessario per accedere al servizio di backend. Ad esempio, se il servizio di backend
sia implementato utilizzando le funzioni di Cloud Run, verifica che l'account di servizio
a cui è assegnato il ruolo Cloud Function Invoker
.
La richiesta API restituisce un errore HTTP 401 o 500
Se una richiesta a un'API di cui è stato eseguito il deployment restituisce un errore HTTP 401 o 500 al client API, potrebbe essersi verificato un problema durante l'utilizzo dell'account di servizio usato quando hai creato l'API per chiamare il tuo servizio di backend.
Un'API di cui è stato eseguito il deployment ha le autorizzazioni associate ai ruoli concessi all'account di servizio che hai utilizzato per creare la configurazione dell'API. L'account di servizio viene controllato per verificare che esista e possa essere utilizzato da API Gateway quando l'API viene dispiata.
Se l'account di servizio viene eliminato o disattivato dopo il deployment del gateway, potrebbe verificarsi la seguente sequenza di eventi:
Immediatamente dopo l'eliminazione o la disattivazione dell'account di servizio, potresti visualizzare risposte HTTP 401 nei log del gateway. Se il campo
response_code_details
è impostato su"via_upstream"
nella voce di logjsonPayload
, questo indica che l'eliminazione o la disattivazione dell'account di servizio è la causa dell'errore.Potresti anche visualizzare un errore HTTP 500 senza alcuna voce di log corrispondente nei log di API Gateway. Se non ci sono richieste immediate al gateway Dopo che l'account di servizio è stato eliminato o disattivato, potresti non vedere il Risposte 401, ma errori HTTP 500 senza i log del gateway API corrispondenti indicano che l'account di servizio del gateway potrebbe non essere più attivo.
Richieste API ad alta latenza
Come le funzioni di Cloud Run e Cloud Run, API Gateway è soggetto all'avvio a freddo una latenza di pochi millisecondi. Se il gateway non ha ricevuto traffico per 15-20 minuti, le richieste inviate al gateway entro i primi 10-15 secondi dell'avvio a freddo avrà una latenza di 3-5 secondi.
Se il problema persiste dopo il periodo di "preparazione" iniziale, controlla i log delle richieste del servizio o dei servizi di backend configurati nella configurazione API. Ad esempio, se il servizio di backend è implementato utilizzando le funzioni Cloud Run, controlla le voci di Cloud Logging del log delle richieste di Cloud Function associato.
Impossibile visualizzare le informazioni dei log
Se l'API risponde correttamente, ma i log non contengono dati, in genere significa che non hai abilitato tutti i servizi Google richiesti da API Gateway.
API Gateway richiede l'abilitazione dei seguenti servizi Google:
Nome | Titolo |
---|---|
apigateway.googleapis.com |
API API Gateway |
servicemanagement.googleapis.com |
API Service Management |
servicecontrol.googleapis.com |
API Service Control |
Per verificare che i servizi richiesti siano abilitati:
gcloud services list
Se non vedi i servizi richiesti nell'elenco, attivali:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Per ulteriori informazioni sui servizi gcloud
, vedi
gcloud
servizi.