Risolvere i problemi di deployment in App Engine

Diversi fattori possono causare errori di deployment in App Engine, tra cui autorizzazioni mancanti, modifiche alle policy dell'organizzazione e problemi nella configurazione dell'app.

Questa pagina descrive i seguenti errori di deployment comuni in App Engine e i metodi per risolverli:

Errori di autorizzazione

Questa sezione descrive gli errori che potrebbero verificarsi durante il deployment dell'app a causa di autorizzazioni dell'account mancanti o modifiche alle norme dell'organizzazione.

Per identificare l'account attivo che utilizzi per accedere a Google Cloud CLI e ad altri strumenti nella piattaforma Google Cloud , 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 del plug-in Cloud Tools.

Per scoprire perché l'assegnazione del solo ruolo di Deployer App Engine (roles/appengine.deployer) potrebbe non essere sufficiente in alcuni casi, consulta Ruoli App Engine.

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

L'deployment non riesce per i nuovi progetti

Potresti visualizzare il seguente errore quando esegui il deployment della tua app per la prima volta in un nuovo progetto:

ERROR: (gcloud.app.deploy) Error Response: [13] Failed to create cloud build: com.google.net.rpc3.client.RpcClientException:..........invalid bucket "staging.PROJECT_ID.appspot.com"; service account PROJECT_ID@appspot.gserviceaccount.com does not have access to the bucket

Per risolvere il problema, concedi il ruolo Amministratore di Storage (roles/storage.admin) al account di servizio predefinito. Per maggiori informazioni, vedi Archiviare i log di build in un bucket creato dall'utente.

Se hai già concesso il ruolo Amministratore storage, insieme agli altri ruoli richiesti in base ai diversi errori di autorizzazione che si verificano durante il deployment, e non riesci ancora a eseguire il deployment dell'app, il problema potrebbe essere dovuto ai seguenti cambiamenti ai criteri dell'organizzazione:

  • A partire da maggio 2024, Google Cloud applica policy dell'organizzazione sicure per impostazione predefinita a tutte le risorse dell'organizzazione. Questo criterio impedisce ad App Engine di concedere il ruolo Editor ai service account predefiniti di App Engine.

  • A giugno 2024, Cloud Build ha modificato il comportamento predefinito per la modalità di utilizzo degli account di servizio nei nuovi progetti. Questo è descritto in dettaglio in Modifica del account di servizio Cloud Build. A seguito di questa modifica, i nuovi progetti che eseguono il deployment delle versioni per la prima volta potrebbero utilizzare il account di servizio App Engine predefinito con autorizzazioni insufficienti per il deployment delle versioni.

Per risolvere il problema, segui questi passaggi:

Il chiamante non dispone dell'autorizzazione per accedere al progetto

Si verifica il seguente errore se il account di servizio non dispone dell'autorizzazione per eseguire il deployment delle app nel progetto corrente:

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

Per risolvere il problema, concedi il ruolo Deployment App Engine (roles/appengine.deployer) al account di servizio.

Impossibile recuperare i metadati dal registry

Se utilizzi il comando gcloud app deploy da un service account che non dispone del ruolo Storage Admin (roles/storage.admin), si verifica il seguente errore:

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

Per risolvere il problema, concedi il ruolo Amministratore Storage al account di servizio.

I service account 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:

  • Il account di servizio App Engine predefinito non dispone del ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer).

    Per risolvere il problema, assegna il ruolo Visualizzatore oggetti Storage al account di servizio.

  • Il tuo progetto ha un perimetro di servizio Controlli di servizio VPC che limita l'accesso all'API Cloud Storage utilizzando i livelli di accesso.

    Per risolvere il problema, aggiungi il account di servizio che utilizzi per il deployment dell'app al perimetro di servizio Controlli di servizio VPC accessPolicies corrispondente.

  • Dopo il 15 maggio 2024, Artifact Registry ospita le immagini per il dominio gcr.io nei progetti Google Cloud senza precedente utilizzo di Container Registry. Se esegui il deployment di un'applicazione esistente in un nuovo progetto creato dopo questa data, il account di servizio potrebbe non disporre delle autorizzazioni necessarie per eseguire il deployment dell'app. Per concedere le autorizzazioni necessarie, consulta Deployment in App Engine.

Impossibile creare Cloud Build

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

Failed to create cloud build: Permission denied

Per risolvere il problema, concedi il ruolo Editor Cloud Build al account di servizio.

Errore durante il recupero dell'applicazione

Il seguente errore si verifica quando il account di servizio che hai utilizzato per eseguire il deployment della tua app non dispone del ruolo App Engine Deployer.

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.

If you are running Google Cloud CLI version 328 or later, the following error occurs
when you deploy your app:

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.

Per risolvere il problema, assegna il ruolo Deployer App Engine al service account che hai utilizzato per il deployment dell'app.

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

Si verifica il seguente errore quando l'utente o il account di servizio che tenta di eseguire il deployment dell'app con un connettore di accesso VPC serverless non dispone delle autorizzazioni richieste:

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

Per risolvere il problema, assicurati che l'utente o il account di servizio utilizzato per il deployment disponga dei ruoli IAM Utente accesso VPC serverless e Visualizzatore Compute.

Errori di deployment comuni

Questa sezione descrive le strategie di risoluzione dei problemi relativi agli errori di configurazione nell'app o nel progetto.

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

Quando esegui il deployment dell'app, in Cloud Logging viene visualizzato il seguente errore per le istanze VM flessibili:

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

Si tratta di un problema noto in cui l'impostazione di instance_tag nel file app.yaml 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 impostato su tre o meno potrebbero riscontrare errori o tempi di inattività imprevisti. Per risolvere il problema, specifica almeno quattro istanze massime nel file app.yaml ed esegui nuovamente il deployment.

Superare il 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 o elimina alcuni servizi o versioni per portare la somma di max_instances entro il limite.

La build durante il deployment non riesce senza errori nei log

Quando esegui 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

Se fai clic sul link nel messaggio di errore e noti che tutti i passaggi di build sono andati a buon fine, ma la build dell'app non è comunque riuscita, la causa potrebbe essere una delle seguenti:

Per risolvere il problema, modifica le seguenti impostazioni per il bucket:

La build non riesce durante l'esecuzione di un'applicazione Node.js

Gli errori di compilazione possono verificarsi quando esegui il deployment di un'applicazione Node.js.

Per impostazione predefinita, il runtime Node.js esegue npm run build se viene rilevato uno script di build nel file package.json. Ciò potrebbe causare comportamenti imprevisti, come build di lunga durata o errori di memoria insufficiente.

Per risolvere il problema, 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 saperne di più, consulta Esecuzione di passaggi di build personalizzati durante il deployment.