Diversi fattori possono causare errori di deployment in App Engine, tra cui autorizzazioni mancanti, modifiche alle norme 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 , svolgi 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 solo del ruolo Deployer App Engine (roles/appengine.deployer
) potrebbe non essere sufficiente in alcuni casi, consulta Ruoli App Engine.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
L'deployment non va a buon fine per i nuovi progetti
Quando esegui il deployment dell'app per la prima volta in un nuovo progetto, potresti visualizzare il seguente errore:
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 archiviazione (roles/storage.admin
) all'account di servizio predefinito. Per ulteriori informazioni, vedi Archiviare i log di compilazione in un bucket creato dall'utente.
Se hai già concesso il ruolo Amministratore archiviazione, insieme agli altri ruoli richiesti in base a diversi errori di autorizzazione riscontrati durante il deployment, ma non riesci ancora a eseguire il deployment dell'app, il problema potrebbe essere dovuto alle seguenti modifiche ai criteri dell'organizzazione:
A partire da maggio 2024, Google Cloud applica le norme dell'organizzazione sicure per impostazione predefinita per 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. Questa procedura è descritta in dettaglio in Modifica dell'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 l'account di servizio App Engine predefinito con autorizzazioni insufficienti per il deployment delle versioni.
Per risolvere il problema:
Concedi il ruolo
Editor
all'account di servizio predefinito di App Engine (PROJECT_ID@appspot.gserviceaccount.com
).Consulta le indicazioni di Cloud Build sulle modifiche all'account di servizio predefinito e disattiva le modifiche predefinite nei nuovi progetti.
Il chiamante non dispone dell'autorizzazione per accedere al progetto
Se l'account di servizio non dispone dell'autorizzazione per eseguire il deployment delle app nel progetto corrente, si verifica il seguente errore:
User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist).
Per risolvere il problema, concedi all'account di servizio il ruolo App Engine Deployer (roles/appengine.deployer
).
Impossibile recuperare i metadati dal registry
Se utilizzi il comando gcloud app deploy
da un service account che non dispone del ruolo Amministratore archiviazione (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 all'account di servizio.
Gli account di servizio devono avere 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:
L'account di servizio App Engine predefinito non dispone del ruolo Visualizzatore oggetti Storage (
roles/storage.objectViewer
).Per risolvere il problema, concedi il ruolo Visualizzatore oggetti Storage all'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 l'account di servizio che utilizzi per eseguire il deployment dell'app al perimetro di servizio Controlli di servizio VPC corrispondente accessPolicies.
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, l'account di servizio potrebbe non disporre delle autorizzazioni necessarie per il deployment dell'app. Per concedere le autorizzazioni richieste, consulta Eseguire il deployment in App Engine.
Impossibile creare Cloud Build
Il seguente errore si verifica se utilizzi il comando gcloud app deploy
da un account di servizio che non dispone del ruolo Editor di Cloud Build (roles/cloudbuild.builds.editor
).
Failed to create cloud build: Permission denied
Per risolvere il problema, concedi il ruolo Editor di Cloud Build all'account di servizio.
Errore durante il recupero dell'applicazione
Il seguente errore si verifica quando l'account di servizio utilizzato per eseguire il deployment dell'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, concedi il ruolo Deployer App Engine all'account di servizio utilizzato per eseguire il deployment dell'app.
Errore durante il deployment di un servizio con un connettore di accesso VPC serverless
Quando l'account utente o di servizio che tenta di eseguire il deployment dell'app con un connettore di accesso VPC serverless non dispone delle autorizzazioni richieste, si verifica il seguente errore:
Please ensure you have [compute.globalOperations.get] on the service project
Per risolvere il problema, assicurati che l'utente o l'account di servizio utilizzato per il deployment abbia i ruoli Utente con accesso alla VPC serverless e Visualizzatore IAM di 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 relativo a un valore non valido durante il deployment in una configurazione VPC condiviso
Quando esegui il deployment dell'app, in Cloud Logging per le istanze VM flessibili viene visualizzato il seguente errore:
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 per cui l'impostazione di instance_tag
nel file app.yaml
genera errori durante la creazione di istanze.
Per risolvere il problema, rimuovi il campo instance_tag
dal file app.yaml
e esegui nuovamente 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 presentare errori o tempi di inattività imprevisti. Per risolvere il problema, specifica almeno quattro istanze massime nel file app.yaml
e esegui nuovamente il deployment.
Superare il limite di istanze massime
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 per il numero massimo di istanze che puoi creare per progetto. Le richieste di creazione di istanze aggiuntive non andranno 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 riportare la somma di max_instances
entro il limite.
La compilazione durante il deployment non va a buon fine, ma non vengono visualizzati 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 scopri che tutti i passaggi di compilazione sono stati completati correttamente, ma la compilazione dell'app non è andata a buon fine, la causa potrebbe essere una delle seguenti:
- Utilizzi le chiavi di crittografia gestite dal cliente (CMEK).
- 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:
- Imposta la crittografia su di proprietà di Google e gestite da Google basate su Google Cloud.
- Rimuovi la norma di conservazione.
La compilazione non riesce quando viene eseguita un'applicazione Node.js
Quando esegui il deployment di un'applicazione Node.js, potrebbero verificarsi errori di compilazione.
Per impostazione predefinita, il runtime Node.js eseguirà npm run build
se nel file package.json
viene rilevato uno script di compilazione. Ciò potrebbe causare comportamenti imprevisti come build di lunga durata o errori di esaurimento della memoria.
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 ulteriori informazioni, consulta Eseguire i passaggi di compilazione personalizzati durante il deployment.