Questa pagina descrive i metodi di risoluzione dei problemi relativi agli errori che potresti riscontrare durante l'utilizzo di App Engine.
Consulta la dashboard relativa allo stato dei servizi Google Cloud 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, 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 per il plug-in Cloud Tools.
Impossibile recuperare i metadati dal registry
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 servizio che non dispone del ruolo Amministratore di archiviazione (roles/storage.admin
).
Per risolvere il problema, concedi il Ruolo Storage Admin per l'account di servizio:
- Per vedere 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:
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 progetto ha un perimetro di servizio VPC il che limita l'accesso all'API Cloud Storage tramite i livelli di accesso.
- Per risolvere il problema, aggiungi l'account di servizio che utilizzi per eseguire il deployment dell'app il perimetro di servizio VPC corrispondente accessPolicies.
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 di 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 vedere quale account hai utilizzato, esegui il comando
gcloud auth list
.
Errore di autorizzazione 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 utilizzato per eseguire il deployment dell'app non dispone del ruolo App Engine Deployer (roles/appengine.deployer
).
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.
Il 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
Questo errore può essere causato da vari fattori, ad esempio autorizzazioni mancanti e modifiche ai criteri dell'organizzazione.
Per risolvere il problema, verifica di aver concesso il ruolo Storage Admin (roles/storage.admin
) all'amministratore
l'account di servizio predefinito. Per concedere il ruolo Amministratore Storage, 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 motivo potrebbe essere dovuto alle seguenti modifiche ai criteri dell'organizzazione:
A partire da maggio 2024, Google Cloud applica criteri dell'organizzazione sicuri per impostazione predefinita per tutte le risorse dell'organizzazione. Questo criterio impedisce ad App Engine di concedere il ruolo
Editor
agli account di servizio predefiniti di App Engine per impostazione predefinita.A partire da giugno 2024, Cloud Build ha modificato il comportamento predefinito per la modalità di utilizzo degli account di servizio nei nuovi progetti. Questa modifica è dettagliata 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
ad App Engine account di servizio predefinito (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.
Timeout durante l'attesa dell'integrità dell'infrastruttura dell'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:
- Verifica di aver concesso il
ruolo Editor (
roles/editor
) al tuo account di servizio App Engine predefinito. - Verifica se i criteri dell'organizzazione per il tuo progetto limitano l'accesso agli indirizzi IP esterni. Per ulteriori informazioni, consulta Problemi noti dell'ambiente flessibile di App Engine.
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
):Concedi i ruoli se l'account di servizio non li ha.
Se esegui il deployment nella configurazione del VPC condiviso e passi
instance_tag
inapp.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'utente o l'account di servizio che esegue il deployment abbia i ruoli Utente con accesso alla VPC serverless e Visualizzatore IAM di Compute.
Errore di valore non valido durante il deployment in una configurazione VPC condivisa
Quando esegui il deployment della tua app, in Cloud Logging per le istanze VM Flex 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
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 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.
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 o elimina alcuni servizi o versioni per riportare la somma di max_instances
al di sotto del limite.
Errore durante il riavvio delle istanze nelle versioni in esecuzione
Quando esegui il deployment dell'app, si verifica il seguente errore:
error when restarting the instance under the running versions
A partire da maggio 2024, Google Cloud applica il criterio dell'organizzazione Richiedi OS Config a tutti i nuovi progetti. Questo criterio richiede che in tutte le istanze VM create nei nuovi progetti sia abilitato un VM Manager. Per i progetti nuovi ed esistenti, questo vincolo impedisce gli aggiornamenti dei metadati che disabilitano VM Manager a livello di progetto o di istanza.
Per risolvere il problema, devi disattivare il vincolo dei criteri dell'organizzazione
constraints/compute.requireOsConfig
.
"compute.firewalls.list" obbligatorio autorizzazione
Quando esegui il deployment dell'app su una rete VPC condivisa, si verifica il seguente errore:
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 il
progetto host
non dispongono del 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
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
Il link nel messaggio di errore indica che tutti i passaggi di build sono stati riuscito. Tuttavia, la compilazione dell'app non è riuscita.
Questo problema si verifica se utilizzi chiavi di crittografia gestite dal cliente
(CMEK) o se 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 bucketstaging.PROJECT_ID.appspot.com
:
- Imposta la crittografia su Chiavi di proprietà di Google e gestite da Google.
- Rimuovi il criterio di conservazione.
Il deployment non riesce a causa di un vincolo dei criteri 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 dei criteri dell'organizzazione
constraints/compute.disableGuestAttributesAccess
.
Errori durante il deployment in una versione di ambiente flessibile esistente
Quando esegui il deployment in una versione flessibile di App Engine esistente, potrebbe verificarsi il seguente errore:
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 funzionante con un'immagine Docker funzionante non sempre genera un deployment funzionante. Il risultato dipende dallo stato delle istanze dal deployment non integro. Nonostante l'errore, se fornisci un'immagine Docker valida, il deployment potrebbe essere corretto. 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 l'API App Engine per la prima volta, l'operazione non va a buon fine con 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 del service account 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. L'account di servizio predefinito è necessario per la creazione dell'app e non può essere ignorato. Questo vale anche quando 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 che hai creato, consulta la Panoramica dei consigli sui ruoli per capire come applicare le autorizzazioni limitate, ad esempio fornire un ruolo di creatore token all'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 viene restituito con errori 502 immediatamente 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 dell'applicazione è inferiore al 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 700000 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 riscontrare 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 monitoraggio cloud per il numero massimo di connessioni attive e in attesa e riduci il numero di connessioni in attesa per assicurarti che il numero massimo di connessioni in attesa sia inferiore o uguale al 75% del numero di connessioni attive.