Risoluzione degli errori di App Engine

In questa pagina vengono descritti i metodi di risoluzione dei problemi che potrebbero verificarsi durante utilizzando App Engine.

Visualizza la dashboard di Google Cloud Service Health per informazioni sugli incidenti che interessano i servizi Google Cloud come App Engine.

Deployment

Se riscontri problemi durante il deployment dell'app utilizzando l'API App Engine Admin, questa sezione elenca i messaggi di errore e i suggerimenti per correggerli.

Il chiamante non dispone dell'autorizzazione per accedere al progetto

Quando esegui il deployment dell'app, si verifica il seguente errore:

User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist): The caller does not have permission

Questo errore si verifica se l'account che hai utilizzato per eseguire il deployment dell'app non dispone di per eseguire il deployment delle app per il progetto attuale.

Per risolvere il problema, concedi il Ruolo Deployer App Engine (roles/appengine.deployer) all'account. Per vedere quale account hai utilizzato per il deployment, esegui una delle seguenti:

  • Se hai utilizzato Google Cloud CLI per il deployment, esegui Comando gcloud auth list.
  • Se hai eseguito il deployment da un IDE, visualizza le impostazioni per il plug-in Cloud Tools.

Impossibile recuperare i metadati dal registro

Quando esegui il deployment dell'app, si verifica il seguente errore:

Failed to fetch metadata from the registry, with reason: generic::permission_denied

Questo errore si verifica se utilizzi il comando gcloud app deploy da un servizio che non ha il ruolo Amministratore Storage (roles/storage.admin).

Per risolvere il problema, concedi il Ruolo Storage Admin per l'account di servizio:

  • Per sapere quale account hai utilizzato, esegui il Comando gcloud auth list.
  • Scopri perché assegnare solo il Deployer App Engine Il ruolo (roles/appengine.deployer) potrebbe non essere sufficiente in alcuni casi; consulta Ruoli App Engine.

Gli account di servizio devono disporre delle autorizzazioni per l'immagine

Quando esegui il deployment dell'app, si verifica il seguente errore:

The App Engine appspot and App Engine flexible environment service accounts must
have permissions on the image IMAGE_NAME

Questo errore si verifica per uno dei seguenti motivi:

Impossibile creare Cloud Build

Quando esegui il deployment dell'app, si verifica il seguente errore:

Failed to create cloud build: Permission denied

Questo errore si verifica se utilizzi il comando gcloud app deploy da un account che non dispone del ruolo Editor Cloud Build (roles/cloudbuild.builds.editor).

Per risolvere il problema, concedi la classe Ruolo Editor Cloud Build per all'account di servizio che usi per il deployment dell'app.

Per sapere quale account hai utilizzato, esegui il Comando gcloud auth list.

Errore delle autorizzazioni durante il recupero dell'applicazione

Quando esegui il deployment dell'app, si verifica il seguente errore:

Permissions error fetching application apps/app_name. Please make sure you are using the correct project ID and that you have permission to view applications on the project

Se esegui Google Cloud CLI versione 328 o successive, si verifica il seguente errore quando esegui il deployment della tua app:

Permissions error fetching application apps/app_name. Please
make sure that you have permission to view applications on the project and that
SERVICE_ACCOUNT has the App Engine Deployer (roles/appengine.deployer) role.

Questo errore si verifica se l'account che hai utilizzato per eseguire il deployment L'app non dispone del Deployer App Engine (roles/appengine.deployer) ruolo.

Per risolvere il problema, verifica di aver concesso il ruolo Deployer App Engine per l'account di servizio che hai utilizzato per eseguire il deployment dell'app. concedere il ruolo se non è presente nell'account di servizio. Per vedere quale account hai utilizzato per il deployment, procedi nel seguente modo: uno dei seguenti:

  • Se hai utilizzato Google Cloud CLI per il deployment, esegui Comando gcloud auth list.
  • Se hai eseguito il deployment da un IDE, visualizza le impostazioni per il plug-in Cloud Tools.

Timeout durante l'attesa dell'integrità dell'infrastruttura delle app

Quando esegui il deployment dell'app, si verifica il seguente errore:

Timed out waiting for the app infrastructure to become healthy

L'errore può essere causato da vari fattori, tra cui autorizzazioni mancanti, errori di codice e CPU o memoria insufficiente oppure controlli di integrità non riusciti. L'errore si verifica solo nell'ambiente flessibile di App Engine.

Per risolvere il problema, elimina le seguenti potenziali cause:

  1. Verifica di aver concesso Ruolo di Editor (roles/editor) per il tuo l'account di servizio predefinito di App Engine.
  2. Verificare se il criterio dell'organizzazione per il progetto limita l'accesso a e indirizzi IP esterni. Per ulteriori informazioni, vedi Problemi noti dell'ambiente flessibile di App Engine.
  3. Verifica di aver concesso i seguenti ruoli all'account di servizio che che usi per eseguire la tua applicazione (di solito l'account di servizio predefinito, app-id@appspot.gserviceaccount.com):

  4. Concedi i ruoli se il servizio se non è presente.

  5. Se esegui il deployment nella configurazione del VPC condiviso e passi instance_tag in app.yaml, consulta questa sezione per risolvere il problema.

Errore relativo alle autorizzazioni durante il deployment di un servizio con connettore di accesso VPC serverless

Quando esegui il deployment dell'app, si verifica il seguente errore:

Please ensure you have [compute.globalOperations.get] on the service project

Questo errore si verifica quando l'account utente o di servizio che sta tentando di eseguire il deployment dell'app con Il connettore VPC serverless non dispone delle autorizzazioni necessarie.

Per risolvere il problema, assicurati che l'account utente o di servizio che esegue il deployment ha un Utente con accesso VPC serverless e i ruoli IAM di Visualizzatore Compute.

Errore di valore non valido durante il deployment in una configurazione del VPC condiviso

Il seguente errore viene visualizzato in Cloud Logging per le istanze VM Flex quando esegui il deployment la tua app:

Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate
tags are not allowed: aef-instance on compute.instances.insert

Questo errore è dovuto a un problema noto corrente in cui l'impostazione di instance_tag può causare errori durante la creazione delle istanze.

Per risolvere il problema, rimuovi instance_tag dal file app.yaml ed esegui nuovamente il deployment.

Errori durante il deployment di app con un massimo di tre istanze

App di cui è stato eseguito il deployment con max_instances impostato su 3 o meno, potrebbero verificarsi errori o tempi di inattività imprevisti. Per risolvere il problema specifica almeno quattro istanze nel file app.yaml ed esegui di nuovo il deployment.

Errore durante il superamento del limite massimo di istanze

Quando esegui il deployment dell'app, si verifica il seguente errore:

You may not have more than 'xx' total max instances in your project.

Esiste un limite al numero massimo di istanze che puoi creare per progetto. Le richieste di creazione di istanze aggiuntive non vanno a buon fine se superi questo limite.

Per risolvere il problema, imposta il valore di max_instances nel file app.yaml su un valore inferiore a questo limite oppure elimina alcuni servizi o versioni per ottenere la somma di max_instances all'interno il limite.

"compute.firewalls.list" obbligatorio autorizzazione

Il seguente errore si verifica quando esegui il deployment dell'app su una VPC condiviso condivisa:

Request to https://compute.googleapis.com/compute/v1/projects/projects/PROJECT_ID/global/firewalls?key failed, details: Required 'compute.firewalls.list' permission for 'projects/PROJECT_ID'

Questo errore si verifica se i seguenti account di servizio per progetto host Non hai il ruolo Utente di rete Compute (roles/compute.networkUser):

Per risolvere il problema, verifica di aver concesso il ruolo Utente di rete Compute Agente di servizio API di Google e agente di servizio ambiente flessibile App Engine gli account di servizio per il progetto host; concedi il ruolo se non è presente per gli account di servizio.

La creazione durante il deployment non riesce senza errori nei log

Durante il deployment dell'app si verifica il seguente errore:

ERROR: (gcloud.app.deploy) Cloud build failed. Check logs at https://console.cloud.google.com/cloud-build/builds/BUILD_ID?project=PROJECT_NUMBER Failure status: UNKNOWN: Error Response: [2] Build failed; check build logs for details

Il link nel messaggio di errore indica che tutti i passaggi di build sono stati riuscito. Tuttavia, la creazione dell'app non è riuscita.

Questo problema si verifica se utilizzi chiavi di crittografia gestite dal cliente. (CMEK) o hai configurato un criterio di conservazione dei dati per il bucket staging.PROJECT_ID.appspot.com.

Per risolvere il problema, modifica le seguenti impostazioni del tuo staging.PROJECT_ID.appspot.com bucket:

Il deployment non riesce a causa di un vincolo del criterio dell'organizzazione

Quando esegui il deployment di un'app, si verifica il seguente errore:

ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred while processing task /app-engine-flex/....: Request to https://compute.googleapis.com/compute/[VERSSION]/[PROJECT_ID]/... failed, details: Constraint constraints/compute.disableGuestAttributesAccess violated for project [PROJECT_ID].

Questo errore può verificarsi a causa dell'applicazione del vincolo del criterio dell'organizzazione constraints/compute.disableGuestAttributesAccess durante il deployment dell'app. Questo criterio viene applicato per impostazione predefinita a tutte le app nell'ambiente flessibile di App Engine.

Per risolvere il problema, devi disattivare il vincolo del criterio dell'organizzazione. constraints/compute.disableGuestAttributesAccess.

Errori durante il deployment in una versione dell'ambiente flessibile esistente

Durante il deployment in un ambiente dell'ambiente flessibile App Engine esistente, potrebbe verificarsi il seguente errore versione:

ERROR: (gcloud.app.deploy) Error Response: [9] An internal error occurred while
processing task /app-engine-flex/flex_await_healthy/flex_await_healthy

Questo errore indica che l'aggiornamento di un deployment non integro con un'immagine Docker funzionante non sempre si traduce in un deployment integro. Il risultato dipende dallo stato delle istanze dal deployment non integro. Nonostante l'errore, se fornisci un'immagine Docker valida, il deployment potrebbe per poi ristabilire l'integrità. L'aggiornamento di una versione esistente con una nuova immagine Docker anche se è consentito, non è una buona prassi. Non è disponibile alcun rollback in caso di versione errore.

Errori di pubblicazione

Le sezioni seguenti trattano gli errori di inizializzazione e pubblicazione dell'app.

Errore di autorizzazione durante la creazione di un'app con l'account di servizio predefinito

Quando crei un'app dopo aver attivato il API App Engine per la prima volta, non riesce e restituisce i seguenti errori:

Interfaccia a riga di comando gcloud

An internal error occurred while calling service consumer manager for service account.
Creating  App Engine application in project [PROJECT__ID] and [REGION]....failed. DEBUG: (gcloud.app.create) Error Response: [13] an internal error has occurred

Richiedere log

Service account creation is not allowed on this project.

Console

Error while initialising App Engine.

Questo errore può verificarsi a causa dell'applicazione del vincolo del criterio dell'organizzazione constraints/iam.disableServiceAccountCreation durante la creazione dell'app. Questo criterio impedisce il provisioning dell' account di servizio predefinito di App Engine PROJECT_ID@appspot.gserviceaccount.com.

Per risolvere il problema, devi rimuovere temporaneamente il criterio dell'organizzazione il vincolo constraints/iam.disableServiceAccountCreation per consentire la creazione e il deployment dell'account di servizio predefinito di App Engine. Il valore predefinito l'account di servizio è necessario per la creazione dell'app e non può essere ignorato. Questo valore è anche applicabile se utilizzi un account di servizio per versione. L'account di servizio predefinito di App Engine può quindi essere eliminato o sostituito con un account di servizio che crei dopo aver eseguito il deployment.

Se utilizzi un account di servizio creato da te, consulta la Panoramica dei suggerimenti per i ruoli. per capire come applicare la limitazione delle autorizzazioni, ad esempio fornendo una ruolo creatore di token per l'account di servizio che crei per l'agente di servizio.

Nginx non riesce a connettersi o a contattare il container dell'app

Il seguente errore si verifica solo nell'ambiente flessibile di App Engine e in genere restituisce con Errori 502 subito dopo l'errore:

recv() failed (104: Connection reset by peer) while reading response header from upstream

Questo errore indica che il proxy inverso nginx (il sidecar nginx) non è in grado di raggiungere il container dell'app. Nei log puoi confrontare la tempistica di chiusura dell'errore 502 nel log nginx con la tempistica del log nginx.error. Un file nginx.error seguito immediatamente da un errore 502 di nginx è probabile che la causa dell'errore .

Questo errore si verifica spesso quando il timeout keepalive della connessione del è minore del timeout keepalive di nginx. Come nginx nell'ambiente flessibile di App Engine ha keepalive_timeout di 650 secondi, le applicazioni devono mantenere attive le connessioni almeno così a lungo. Per impostazione predefinita, le applicazioni Node.js keepAliveTimeout di 5000 millisecondi. In questo caso, puoi impostare server.keepAliveTimeout su 700.000 millisecondi.

Per risolvere il problema, controlla i log scritti dal codice in esecuzione nell'app il container connettendoti alla VM istanza e aggiungere altre e log, se necessario, per trovare la causa principale.

Memoria insufficiente

Il seguente errore si verifica nell'ambiente flessibile di App Engine e in genere restituisce con Errori 502:

kernel: [  133.706951] Out of memory: Kill process 4490 (java) score 878 or sacrifice child
kernel: [  133.714468] Killed process 4306 (java) total-vm:5332376kB, anon-rss:2712108kB, file-rss:0kB

Questo errore indica che App Engine ha terminato l'applicazione.

Questo errore si verifica quando l'istanza ha memoria insufficiente. Per impostazione predefinita, l'ambiente flessibile di App Engine ha 1 GB di memoria, con solo 600 MB disponibili per il container dell'applicazione.

Per risolvere il problema, controlla i log e controlla se è presente una voce Memoria esaurita. Aggiorna il tuo memory_gb configurazione ed eseguire nuovamente il deployment.

Connessioni aperte insufficienti per gestire le richieste in entrata

Le app potrebbero visualizzare un errore 502 se il numero massimo di connessioni in attesa è uguale o superiore al 75% del numero di connessioni attive.

Per risolvere il problema, controlla le metriche di Cloud Monitoring per il numero massimo di connessioni attive e in attesa e diminuiscilo di connessioni in attesa per garantire che venga raggiunto il numero massimo è inferiore o uguale al 75% del numero di connessioni attive.