Panoramica della risoluzione dei problemi
Questa pagina fornisce informazioni generali sulla risoluzione dei problemi relativi ad API Gateway.
Impossibile eseguire i comandi "gcloud api-gateway"
Per eseguire i comandi gcloud api-gateway ...
, devi aver aggiornato
Google Cloud CLI e abilitato i servizi Google necessari.
Per ulteriori informazioni, consulta Configurazione dell'ambiente di sviluppo.
Il comando "gcloud api-gateway api-configs create" indica che l'account di servizio non esiste
Se esegui il comando gcloud api-gateway api-configs create ...
e ricevi
un errore nel modulo:
ERROR: (gcloud.api-gateway.api-configs.create) FAILED_PRECONDITION: Service Account "projects/-/serviceAccounts/service_account_email" does not exist
Esegui nuovamente il comando, ma questa volta includi l'opzione --backend-auth-service-account
per specificare esplicitamente l'indirizzo email dell'account di servizio da 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 ha le autorizzazioni associate ai ruoli concessi all'account di servizio che hai utilizzato al momento della creazione della configurazione API. In genere, l'errore HTTP 403 è dovuto al fatto 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 assegnato il ruolo Editor
o il ruolo necessario per accedere al servizio di backend. Ad esempio, se il servizio di backend viene implementato utilizzando Cloud Functions, assicurati che all'account di servizio sia 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 nell'utilizzo dell'account di servizio utilizzato quando hai creato la configurazione API per chiamare il 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 durante la creazione della configurazione API. L'account di servizio viene controllato per verificare che esista entrambi e possa essere utilizzato dal gateway API quando viene eseguito il deployment dell'API.
Se l'account di servizio viene eliminato o disabilitato dopo il deployment del gateway, potrebbe verificarsi la seguente sequenza di eventi:
Subito dopo l'eliminazione o la disattivazione dell'account di servizio, potresti vedere risposte HTTP 401 nei log del gateway. Se il campo
response_code_details
è impostato su"via_upstream"
nella voce di logjsonPayload
, significa che l'errore è dovuto all'eliminazione o alla disattivazione dell'account di servizio.Potresti anche visualizzare un errore HTTP 500 senza alcuna voce di log corrispondente nei log del gateway API. Se non ci sono richieste al gateway subito dopo l'eliminazione o la disattivazione dell'account di servizio, potresti non vedere le risposte HTTP 401, ma gli 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 Cloud Run e Cloud Functions, API Gateway è soggetto a latenza di "avvio a freddo". Se il gateway non ha ricevuto traffico per 15-20 minuti, le richieste effettuate al gateway entro i primi 10-15 secondi dell'avvio a freddo avranno una latenza da 3 a 5 secondi.
Se il problema persiste dopo il periodo di preparazione iniziale, controlla i log delle richieste dei servizio di backend che hai configurato nella configurazione dell'API. Ad esempio, se il servizio di backend viene implementato utilizzando Cloud Functions, controlla le voci Cloud Logging nel log delle richieste della funzione Cloud Function associato.
Impossibile visualizzare le informazioni di log
Se la tua 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 i servizi richiesti non sono elencati, 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
Servizi gcloud
.