Risoluzione degli errori di App Engine

Questa pagina descrive i metodi di risoluzione dei problemi che potresti riscontrare durante l'utilizzo di App Engine.

Consulta 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'applicazione utilizzando l'API App Engine Admin, questa sezione elenca i messaggi di errore e i suggerimenti per correggere ciascun errore.

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 dell'autorizzazione per eseguire il deployment delle app per il progetto attuale.

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

  • Se hai utilizzato Google Cloud CLI per il deployment, esegui il 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 account di servizio che non ha il ruolo Storage Admin (roles/storage.admin).

Per risolvere il problema, concedi il ruolo Storage Admin all'account di servizio:

  • Per controllare quale account hai utilizzato, esegui il comando gcloud auth list.
  • Per scoprire perché l'assegnazione solo del ruolo Deployer App Engine (roles/appengine.deployer) potrebbe non essere sufficiente in alcuni casi, consulta Ruoli di 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 ha il ruolo Editor Cloud Build (roles/cloudbuild.builds.editor).

Per risolvere il problema, concedi il ruolo Editor Cloud Build all'account di servizio che stai utilizzando per eseguire il deployment dell'app.

Per controllare 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 durante il deployment dell'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 dell'app non ha il ruolo di Deployer App Engine (roles/appengine.deployer).

Per risolvere il problema, verifica di aver concesso il ruolo Deployer App Engine all'account di servizio che hai utilizzato per eseguire il deployment dell'app; concedi il ruolo se non è presente nell'account di servizio. Per vedere quale account hai utilizzato per il deployment, esegui una delle seguenti operazioni:

  • Se hai utilizzato Google Cloud CLI per il deployment, esegui il 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

Questo errore può essere causato da vari fattori, tra cui autorizzazioni mancanti, errori di codice, CPU o memoria insufficiente o 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 il ruolo Editor (roles/editor) all'account di servizio predefinito di App Engine.
  2. Verifica di aver concesso i ruoli seguenti all'account di servizio che utilizzi per eseguire l'applicazione (in genere l'account di servizio predefinito, app-id@appspot.gserviceaccount.com):

  3. Concedi i ruoli se l'account di servizio non li dispone.

  4. Se esegui il deployment in una 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 abbia i ruoli IAM Utente accesso VPC serverless e 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 della 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 attualmente in cui l'impostazione di instance_tag genera errori durante la creazione delle istanze.

Per risolvere il problema, rimuovi il campo instance_tag dal file app.yaml ed esegui di nuovo il deployment.

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

Le app di cui è stato eseguito il deployment con max_instances impostata su tre o un valore inferiore potrebbero riscontrare 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 riportare la somma di max_instances entro il limite.

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

Seguendo il link nel messaggio di errore viene indicato che tutti i passaggi della build sono stati eseguiti correttamente. 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 tuo bucket staging.PROJECT_ID.appspot.com.

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

La build durante il deployment ha esito negativo se viene eseguita con NODE_ENV=development

Questo errore potrebbe verificarsi quando esegui il deployment di un'applicazione Node.js. Per impostazione predefinita, il runtime Node.js viene eseguito npm run build se viene rilevato uno script build nel file package.json.

Questo potrebbe causare comportamenti imprevisti come build a lunga esecuzione o errori di memoria insufficiente.

Specifica NODE_ENV=development nel file app.yaml per assicurarti che l'esecuzione abbia tutte le dipendenze richieste.

Nonostante l'errore, puoi forzare la produzione specificando NODE_ENV: 'production' in build-env-variables nel file app.yaml:

  build_env_variables:
    NODE_ENV: 'production'

Per ulteriori informazioni, consulta Esecuzione di passaggi di build personalizzati durante il deployment.

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 abilitato l'API App Engine per la prima volta, l'app genera 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 questo problema, devi rimuovere temporaneamente il vincolo del criterio dell'organizzazione constraints/iam.disableServiceAccountCreation per consentire la creazione e il deployment dell'account di servizio predefinito di App Engine. L'account di servizio predefinito è necessario per la creazione dell'app e non può essere ignorato. Questo è applicabile anche se usi un account di servizio per versione. L'account di servizio predefinito di App Engine può essere quindi eliminato o sostituito con un account di servizio creato da te dopo il completamento del deployment.

Se utilizzi un account di servizio creato da te, consulta la Panoramica dei suggerimenti sui ruoli per capire come applicare la limitazione delle autorizzazioni, ad esempio fornire un ruolo Creatore token sull'account di servizio creato per l'agente di servizio.

Errori di sicurezza durante l'utilizzo di servizi in bundle legacy per Python

Se utilizzi un'API dei servizi in bundle legacy all'avvio di un'app Python 3, potresti visualizzare il seguente messaggio di errore:

Attempted RPC call without active security ticket

Questo errore può verificarsi in scenari come la lettura di determinati valori da Memcache quando l'app inizia a configurare una connessione al database o a impostare una variabile globale.

Per risolvere il problema, puoi provare a spostare questa logica in una richiesta di preparazione.