Esegui il deployment dell'app per caricarla ed eseguirla su App Engine. Quando esegui il deployment delle tue app, crei le relative versioni e i servizi corrispondenti in App Engine. Puoi eseguire il deployment di intere app, inclusi tutti i file del codice sorgente e di configurazione, oppure puoi eseguire il deployment e l'aggiornamento di singole versioni o file di configurazione.
Per eseguire il deployment delle app in modo programmatico, utilizza l'API Admin.
Prima di iniziare
Prima di eseguire il deployment dell'app:
Il proprietario del progetto Google Cloud deve creare l'applicazione App Engine.
Assicurati che il tuo account utente includa i privilegi necessari.
Concedi a Cloud Build l'autorizzazione per eseguire il deployment delle app nel tuo progetto. Quando esegui il deployment dell'app, App Engine utilizza Cloud Build per creare l'app in un container ed eseguire il deployment del container nel runtime nella regione dell'app. Cloud Build non dispone dell'autorizzazione per eseguire il deployment delle app Java 8 per impostazione predefinita, perciò devi concederla prima di poter eseguire il deployment delle app.
Configurazione dello strumento di creazione Maven (consigliata)
Per eseguire il deployment della tua app utilizzando lo strumento di compilazione Maven, devi configurare il tuo progetto per l'utilizzo del plug-in Maven per App Engine.
- Installa gcloud CLI, il componente
app-engine-java
e accedi. - Compila e crea il tuo progetto utilizzando il plug-in Maven
Installazione di gcloud CLI
Per eseguire il deployment dell'app con gcloud CLI, devi scaricare, installare e inizializzare gcloud CLI.
Se hai già installato gcloud CLI e vuoi configurarlo in modo che utilizzi un ID progetto Google Cloud diverso da quello in cui l'hai inizializzato, consulta Gestione delle configurazioni dell'interfaccia a riga di comando di gcloud.
Utilizzo di un proxy
Se esegui il comando di deployment da un sistema che utilizza un proxy HTTP o HTTPS, devi configurare lo strumento in modo che possa comunicare tramite il proxy.
Esegui questi comandi per configurare gcloud CLI:
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
Puoi anche impostare username
e password
per il proxy. Per ulteriori informazioni, vedi gcloud config.
Deployment di un'app
Per eseguire il deployment della tua app in App Engine, utilizza lo strumento di creazione Maven (consigliato) o il comando gcloud app deploy
dalla directory radice dell'applicazione.
Utilizzo di Maven (consigliato)
Per eseguire il deployment della tua app con lo strumento di creazione Maven, esegui questo comando dalla directory di primo livello del progetto, dove si trova il file pom.xml
:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud. Se il file pom.xml
specifica già l'ID progetto, non è necessario includere la proprietà -Dapp.deploy.projectId
nel comando che esegui.
Utilizzo della riga di comando gcloud
gcloud app deploy [CONFIGURATION_FILES]
Sostituisci [CONFIGURATION_FILES]
con il percorso di uno o più file di configurazione.
Utilizza un singolo spazio bianco per separare i nomi dei percorsi.
Flag facoltativi:
--version
: specifica un ID versione personalizzato. Se non specifichi un ID versione, App Engine ne genera uno.--no-promote
: esegue il deployment dell'app senza instradare automaticamente tutto il traffico a quella versione. Per impostazione predefinita, ogni versione di cui esegui il deployment viene configurata automaticamente per ricevere il 100% del traffico.--project
: specifica un ID progetto Google Cloud alternativo a quello che hai inizializzato come predefinito in gcloud CLI.
Per maggiori informazioni, consulta il gcloud app deploy
riferimento
o esegui gcloud help
dalla riga di comando.
Scelta di ID versione univoci
Per le istanze con scalabilità manuale, l'ID della versione deve iniziare con una lettera per distinguerle dagli ID istanza numerici. Ciò garantisce che le richieste vengano indirizzate alla destinazione corretta ed evita ambiguità con pattern URL come123-dot-my-service.[REGION_ID].r.appspot.com
, che può essere interpretato
in due modi:
- Se esiste la versione
123
, la richiesta viene instradata alla versione123
del serviziomy-service
. - Se la versione
123
non esiste, la richiesta viene instradata invece all'ID istanza123
in cui sono in esecuzione le versioni del serviziomy-service
.
Puoi assegnare un nome alle versioni come preferisci per le istanze configurate per la scalabilità automatica o la scalabilità di base, poiché il targeting di queste istanze non è supportato.
Deployment di più applicazioni di servizio
Quando la tua applicazione è presa in considerazione in più servizi, puoi eseguire il deployment e aggiornare i servizi con targeting individuale o tutti i servizi contemporaneamente. Il deployment di aggiornamenti ai servizi può includere l'aggiornamento di singoli file di configurazione o l'aggiornamento del codice sorgente nelle versioni corrispondenti.
Ad esempio, puoi eseguire il deployment e creare due versioni in App Engine, in cui ogni versione viene eseguita nel proprio servizio. La prima versione funge da servizio di frontend e l'altra da backend dell'app. Puoi quindi eseguire il deployment dei singoli file di configurazione per aggiornare solo le impostazioni di un servizio. Puoi anche scegliere di eseguire il deployment di una nuova versione in un servizio per aggiornare il codice sorgente del frontend, del backend o di entrambi contemporaneamente.
Requisiti per più servizi
Puoi utilizzare gli stessi comandi di deployment per eseguire il deployment e l'aggiornamento di più servizi della tua applicazione con i seguenti requisiti:
Inizialmente devi eseguire il deployment di una versione della tua app nel servizio
default
prima di poter creare ed eseguire il deployment di servizi successivi.Devi specificare l'ID del servizio nel file di configurazione
appengine-web.xml
della versione corrispondente. Per specificare l'ID servizio, includi la definizione dell'elementomodule: [YOUR_SERVICE_ID]
in ogni file di configurazione. Per impostazione predefinita, se si esclude questa definizione di elemento dal file di configurazione, la versione viene distribuita nel serviziodefault
.Devi specificare tutti i file di configurazione
appengine-web.xml
corrispondenti nel comando di deployment per eseguire il deployment di più servizi contemporaneamente. Il serviziodefault
deve essere elencato per primo.
Per eseguire il deployment di più servizi
Dalla directory radice dell'applicazione in cui si trovano i file di configurazione, esegui il comando di deployment e specifichi i relativi percorsi e nomi file per il file appengine-web.xml
di ogni servizio.
Utilizzo dello strumento di creazione Maven
Se la directory radice del progetto contiene solo i tuoi servizi, puoi eseguire il deployment di tutti questi servizi con un singolo comando Maven.
Il comando Maven deployment esegue l'iterazione in ciascuno dei servizi del progetto per individuare i relativi file di configurazione ed eseguire il deployment di ogni servizio.
Per eseguire il deployment di più servizi utilizzando il plug-in Maven:
- Assicurati che appengine-maven-plugin sia stato aggiunto al file
pom.xml
principale. Esegui questo comando:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud. Se il file
pom.xml
specifica già l'ID progetto, non è necessario includere la proprietà-Dapp.deploy.projectId
nel comando che esegui.
Utilizzo di gcloud
gcloud app deploy [CONFIGURATION_FILES]
Sostituisci [CONFIGURATION_FILES]
con il percorso di uno o più file di configurazione.
Utilizza un singolo spazio bianco per separare i nomi dei percorsi.
Riceverai la verifica tramite la riga di comando non appena il deployment di ogni servizio è stato eseguito correttamente.
Visualizzazione dei log di build
Cloud Build trasmette flussi di log di build e deployment visualizzabili nella sezione Cronologia di Cloud Build della console Google Cloud. Per visualizzare le build nella regione dell'app, usa il menu a discesa Regione nella parte superiore della pagina per scegliere la regione in base alla quale vuoi filtrare.
Aggiornamento degli indici
Per creare o aggiornare gli indici utilizzati dalle tue app, carica il file di configurazione datastore-indexes.xml
in Datastore. Gli indici che non esistono ancora vengono creati dopo il caricamento del file di configurazione.
La creazione di tutti gli indici da parte di Datastore potrebbe richiedere un po' di tempo, pertanto questi indici non saranno immediatamente disponibili in App Engine. Se la tua app è già configurata per ricevere traffico, possono verificarsi eccezioni per le query che richiedono un indice ancora in fase di creazione.
Per evitare eccezioni, devi concedere il tempo necessario per la creazione di tutti gli indici, ad esempio:
Carica il file di configurazione
index.xml
su Datastore prima di eseguire il deployment della tua versione:Carica il file
index.xml
in Datastore:gcloud datastore indexes create index.yaml
Per informazioni, consulta il riferimentogcloud datastore
.Utilizza la console Google Cloud per monitorare lo stato di tutti i tuoi indici:
Dopo aver creato tutti gli indici, esegui il deployment della nuova versione in App Engine.
Crea gli indici prima di eseguire la migrazione o la suddivisione del traffico alla tua versione:
-
Definisci un nuovo ID versione nel file
appengine-web.xml
dell'app. - Esegui il deployment della nuova versione.
- Utilizza la console Google Cloud per monitorare lo stato di tutti gli indici:
- Dopo aver creato tutti gli indici, utilizza la console Google Cloud per eseguire la migrazione o suddividere il traffico alla tua versione:
-
Definisci un nuovo ID versione nel file
Per ulteriori informazioni sugli indici, consulta Configurazione degli indici Datastore.
Risoluzione dei problemi
Di seguito sono riportati i messaggi di errore più comuni che potresti ricevere:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Se il progetto Google Cloud non include l'applicazione App Engine richiesta, il comando
gcloud app deploy
può restituire un errore quando tenta di eseguire il comandogcloud app create
. Solo gli account con il ruolo Proprietario hanno le autorizzazioni necessarie per creare applicazioni App Engine. Command not found
- Consulta l'articolo sull'utilizzo del server di sviluppo locale per istruzioni su come configurare lo strumento del server di sviluppo locale.
Import Error
- Se hai installato sia l'interfaccia alla gcloud CLI sia l'SDK originale di App Engine, le voci del percorso potrebbero entrare in conflitto tra loro e causare errori di importazione. Se hai ricevuto errori durante l'esecuzione dei comandi di gcloud CLI, segui le istruzioni per eseguire il server di sviluppo locale.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
- Prima di poter eseguire il deployment e creare più servizi della tua applicazione, devi eseguire il deployment e creare il servizio
default
. Per maggiori dettagli su come eseguire il deployment di una versione nel serviziodefault
, vedi Deployment di più applicazioni di servizio. Too Many Versions (403)
- App Engine ha un limite al numero di versioni di cui è stato eseguito il deployment della tua applicazione. Si tratta di requisiti diversi per le applicazioni gratuite e per quelle di cui è stato eseguito il deployment.
Puoi utilizzare la console Google Cloud per eliminare una versione precedente e caricare il codice più recente.
You do not have permission to modify this app (403)
- Questo può accadere quando l'account con cui hai eseguito l'autenticazione non dispone dell'autorizzazione per eseguire il deployment all'ID applicazione specificato nel comando o nel
appengine-web.xml
. Verifica che l'ID applicazione sia corretto e che corrisponda al valore dell'ID progetto della console Google Cloud. Poi, controlla le autorizzazioni del progetto nella console e verifica che il tuo account sia elencato con un livello di autorizzazione sufficiente per consentire il deployment delle app. [13] An internal error occurred while creating a Cloud Storage bucket.
App Engine crea per tuo conto un bucket Cloud Storage predefinito in più regioni, nella stessa regione in cui è stata creata l'applicazione. Questo bucket è necessario per archiviare i contenuti dell'applicazione. Questo errore viene restituito quando non è possibile creare il bucket nei seguenti casi:
L'account di servizio App Engine predefinito non è presente nel progetto. Se il tuo account è stato rimosso prima che siano trascorsi 30 giorni dall'eliminazione, puoi ripristinarlo.
Il tuo progetto si trova in un'organizzazione che applica il criterio
constraints/gcp.resourceLocations
, che non consente la creazione di risorse nella stessa area geografica in cui è stato creato App Engine. Dovrai eseguire l'override del criterioconstraints/gcp.resourceLocations
applicato per il tuo progetto e consentire le località con più regioni nella stessa regione in cui è stata creata l'app App Engine.
[13] An internal error occurred
Questo errore può verificarsi se il file di configurazione
app.yaml
di App Engine contiene una risorsaname
non valida nella chiavevpc_access_connector
. Assicurati che il camponame
contenga il progetto e la regione corretti in cui è stato creato il connettore di accesso VPC serverless.Se il problema persiste dopo aver verificato la validità della configurazione di
app.yaml
, utilizza Google Cloud SDK per eseguire nuovamente il deployment del servizio, aggiungendo il flag--verbosity=debug
e contatta l'assistenza Cloud fornendo l'output del comando.- Altro errore di deployment
Se il deployment non riesce, assicurati che l'API Cloud Build sia abilitata nel progetto. App Engine abilita automaticamente questa API la prima volta che esegui il deployment di un'app, ma se qualcuno l'ha disabilitata, i deployment non andranno a buon fine.
Passaggi successivi
- Utilizza i servizi per creare un'applicazione di grandi dimensioni.
- Suddividi il traffico o esegui la migrazione del traffico per instradare il traffico alle versioni di cui esegui il deployment.
- Esamina gli argomenti e i flag della riga di comando
gcloud app deploy
.