ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Scopri come eseguire la tua applicazione localmente, come eseguirne il deployment e come testarla in App Engine.
Esegui localmente
Per testare l'applicazione prima del deployment, eseguila nel tuo ambiente locale con gli strumenti di sviluppo che utilizzi di solito.
Ti consigliamo di utilizzare strumenti Python standard, come virtualenv
per creare ambienti isolati e pytest
per eseguire test di unità e di integrazione, anziché fare affidamento su dev_appserver
, il server di sviluppo locale fornito con il
Google Cloud SDK.
Ad esempio, in genere puoi eseguire un'applicazione Flask con il server di sviluppo Flask utilizzando:
python main.py
Avvia le applicazioni Django utilizzando:
python manage.py runserver
Per simulare un ambiente App Engine di produzione, esegui il server WSGI (Web Server Gateway Interface) completo in locale. Utilizza lo stesso
comando specificato come punto di contatto nel file app.yaml
, ad esempio:
gunicorn -b :$PORT main:app
Prima di eseguire il deployment dell'applicazione
Prima di eseguire il deployment dell'applicazione:
- Il proprietario del progetto Google Cloud deve configurare il progetto per App Engine. Google Cloud
- Assicurati che il tuo account utente includa i privilegi richiesti.
Esegui il deployment dell'applicazione
Esegui il deployment dell'applicazione in App Engine utilizzando il comando
gcloud app deploy
. Durante il deployment, il servizio Cloud Build crea un'immagine container della tua applicazione da eseguire nell'ambiente standard.
Ogni build viene eseguita nella stessa regione del progetto Google Cloud. Per ulteriori informazioni, consulta Gestire le immagini di build.
Per eseguire il deployment delle app in modo programmatico, utilizza l'API Admin.
Esegui il deployment di un servizio
Esegui il deployment dell'applicazione in App Engine eseguendo il deployment delle versioni dei servizi dell'applicazione e di ciascuno dei relativi file di configurazione.
Per eseguire il deployment di una versione del servizio dell'applicazione, esegui il comando seguente dalla directory in cui si trova il file app.yaml
del servizio:
gcloud app deploy
Se non specifichi file con il comando, viene eseguito il deployment solo del file app.yaml
nella directory corrente. Per impostazione predefinita, il comando deploy
genera un ID univoco per la versione di cui esegui il deployment, esegue il deployment della versione nel progettoGoogle Cloud per cui hai configurato Google Cloud CLI e inoltra tutto il traffico alla nuova versione.
Puoi modificare il comportamento predefinito del comando scegliendo come target file specifici o includendo parametri aggiuntivi:
- Per eseguire il deployment degli altri file di configurazione del servizio, devi scegliere come target e eseguire il deployment di ciascun file separatamente. Ad esempio:
gcloud app deploy cron.yaml gcloud app deploy dispatch.yaml gcloud app deploy index.yaml
- Per specificare un ID versione personalizzato, utilizza il flag
--version
. - Per impedire che il traffico venga indirizzato automaticamente alla nuova versione, utilizza il flag
--no-promote
. - Per eseguire il deployment in un progetto Google Cloud specifico, utilizza il flag
--project
.
Ad esempio, per eseguire il deployment del servizio definito dal file app.yaml
in un progettoGoogle Cloud specifico, assegnagli un ID versione personalizzato e impedisci il routing del traffico alla nuova versione:
gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote
Per ulteriori informazioni su questo comando, consulta la gcloud app deploy
documentazione di riferimento.
Esegui il deployment di più servizi
Utilizzi lo stesso comando di deployment per il deployment o l'aggiornamento dei diversi servizi che compongono l'applicazione.
Prima di iniziare:
- Devi inizialmente eseguire il deployment di una versione della tua applicazione nel servizio
default
prima di poter creare ed eseguire il deployment di servizi successivi. - L'ID di ciascun servizio deve essere specificato nei relativi file di configurazione
app.yaml
. Per specificare l'ID servizio, includi la definizione dell'elementoservice
in ogni file di configurazione. Per impostazione predefinita, se escludi questa definizione di elemento dal file di configurazione, la versione viene dispiattata nel serviziodefault
.
Per eseguire il deployment di più servizi, esegui il deployment separato del file app.yaml
di ciascun servizio. Puoi specificare più file con un unico comando gcloud app deploy
:
gcloud app deploy service1/app.yaml service2/app.yaml
Visualizza i log di compilazione
Cloud Build streamma i log di compilazione e deployment che sono visibili nella sezione Cronologia di compilazione di Cloud Build della console Google Cloud. Per visualizzare le build nella regione dell'app, utilizza il menu Regione per filtrare in base alla regione.
Gestire le immagini di compilazione
Ogni volta che esegui il deployment di una nuova versione:
App Engine crea un'immagine container utilizzando il servizio Cloud Build.
Cloud Build compila l'immagine del contenitore nella regione dell'app ed esegue l'ambiente standard di App Engine.
App Engine archivia le immagini container create in Artifact Registry. Puoi scaricare queste immagini per conservarle o pubblicarle altrove.
Al termine del deployment, App Engine non necessita più delle immagini container. Le immagini container non vengono eliminate automaticamente. Per evitare di raggiungere la quota di spazio di archiviazione, puoi eliminare in sicurezza le immagini che non ti servono. Tuttavia, se potresti aver bisogno delle immagini in futuro o vuoi conservare una copia, devi esportarne una prima dell'eliminazione. Per ulteriori informazioni sulla gestione delle immagini in Artifact Registry, consulta Gestire le immagini.
Ignorare i file
Puoi utilizzare un file .gcloudignore
per specificare file e directory che non verranno caricati su App Engine quando esegui il deployment dei servizi. Questa opzione è utile per ignorare gli elementi di build e altri file che non devono essere caricati con il deployment.
visualizza l'applicazione
Dopo aver eseguito il deployment dell'applicazione in App Engine, puoi eseguire il seguente comando per avviare il browser e visualizzarla all'indirizzo
https://PROJECT_ID.REGION_ID.r.appspot.com
:
gcloud app browse
Esegui il test su App Engine prima di spostare il traffico
Prima di configurare una nuova versione per ricevere il traffico, puoi testarla su App Engine. Ad esempio, per testare una nuova versione del servizio default
:
Esegui il deployment della nuova versione, ma impedisci che il traffico venga indirizzato automaticamente alla nuova versione:
gcloud app deploy --no-promote
Per accedere alla nuova versione, vai al seguente URL:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
Ora puoi testare la nuova versione nell'ambiente di runtime di App Engine. Puoi eseguire il debug dell'applicazione visualizzandone i log. Per ulteriori informazioni, consulta la sezione Scrivere i log delle applicazioni.
App Engine inoltra le richieste inviate a
https://PROJECT_ID.REGION_ID.r.appspot.com
alla versione precedentemente configurata per ricevere il traffico.Quando vuoi inviare traffico alla nuova versione, utilizza la console Google Cloud per eseguirne la migrazione:
Seleziona la versione appena di cui hai eseguito il deployment e fai clic su Esegui la migrazione del traffico.
Puoi utilizzare la stessa procedura per testare le nuove versioni di altri servizi sostituendo
default
nell'URL con il nome del servizio:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
Per ulteriori informazioni sul targeting di servizi e versioni specifici, consulta Come vengono instradate le richieste.
Utilizzare le variabili di ambiente di compilazione
Puoi impostare le variabili di ambiente di compilazione per i runtime che supportano i buildpack.
Le variabili di ambiente di compilazione sono coppie chiave-valore che puoi specificare per configurare il buildpack utilizzato per il deployment dell'app. Ad esempio, potresti voler specificare le opzioni del compilatore.
Prima di iniziare:
- Le chiavi devono iniziare con una lettera ASCII maiuscola e possono includere lettere ASCII maiuscole, cifre e trattini bassi.
- Evita di creare variabili con un prefisso della chiave
GOOGLE_*
. - Le seguenti chiavi sono riservate all'uso di Google:
GOOGLE_RUNTIME
GOOGLE_RUNTIME_VERSION
GOOGLE_ENTRYPOINT
GOOGLE_DEVMODE
- Puoi utilizzare qualsiasi chiave supportata da buildpack.
Per utilizzare le variabili di ambiente con i buildpack, specifica il campo build_env_variables
nel file app.yaml
.
Scopri di più sui buildpack.
Utilizzare il server di sviluppo locale
Google Cloud CLI include un server di sviluppo locale denominato
dev_appserver
che puoi eseguire localmente per simulare l'esecuzione dell'applicazione in App Engine in produzione. Questo server di sviluppo simula parzialmente l'ambiente in cui viene eseguita l'applicazione, consentendo di testare le app scritte per uno dei runtime dell'ambiente standard.
Esegui il server di sviluppo locale
Dopo aver creato il file di configurazione app.yaml
per l'app, puoi avviare il server di sviluppo locale con il comando dev_appserver.py
per eseguire l'app localmente.
Per ottenere le credenziali di accesso per il tuo account utente, esegui:
gcloud auth login
Consenti all'applicazione locale di utilizzare temporaneamente le tue credenziali utente per l'accesso all'API:
gcloud auth application-default login
Per avviare il server di sviluppo locale:
Nella directory contenente il file di configurazione
app.yaml
, esegui il comandodev_appserver.py
e specifica l'ID progetto e il percorso del fileapp.yaml
:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --application=PROJECT_ID app.yaml
Per modificare la porta, includi l'opzione
--port
:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --application=PROJECT_ID app.yaml --port=9999
Per testare un'app Python 3, esegui
dev_appserver.py
con un interprete Python 3. Devi specificare il file binario di Python 3 nel flag--runtime_python_path
, ad esempio:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --runtime_python_path=/usr/bin/python3 --application=PROJECT_ID app.yaml --port=9999
Per scoprire di più sulle opzioni del comando
dev_appserver.py
, consulta Opzioni del server di sviluppo locale.All'avvio, il server di sviluppo locale configura un ambiente di sviluppo che preinstalla le dipendenze trovate nel file
requirements.txt
.Ora il server di sviluppo locale è in esecuzione e rimane in attesa delle richieste. Visita la pagina http://localhost:8080/ nel tuo browser web per vedere l'app in azione.
Se hai specificato una porta personalizzata con l'opzione
--port
, ricordati di aprire il browser su quella porta.Per arrestare il server locale dalla riga di comando, premi Ctrl+C sulla tastiera.
Rileva l'ambiente di runtime dell'applicazione
Per determinare se il codice viene eseguito in produzione o nel
server di sviluppo locale, puoi controllare la variabile di ambiente GAE_ENV
:
if os.getenv('GAE_ENV', '').startswith('standard'): # Production in the standard environment else: # Local execution.
Utilizzare il server di sviluppo locale con i Google Cloud servizi
Puoi integrare dev_appserver
con altri Google Cloud componenti.
Librerie client di Cloud
Molte librerie client di Google Cloud dipendono dalla presenza della variabile di ambiente GOOGLE_CLOUD_PROJECT
, che dovrebbe essere l'ID progetto Google Cloud. Puoi trovare il relativo valore eseguendo il comando gcloud config list project
o consultando la pagina del progetto nella console Google Cloud.
Per assicurarti che questa variabile di ambiente sia impostata correttamente durante lo sviluppo locale, inizializza dev_appserver
utilizzando il parametro --application=PROJECT_ID
come mostrato nell'esempio precedente.
Emulatori cloud
Puoi testare la tua applicazione con gli emulatori per Cloud Datastore, Cloud Bigtable e Cloud Pub/Sub.
Ricaricare automaticamente le modifiche a requirements.txt
e app.yaml
Il server di sviluppo locale installa automaticamente le dipendenze trovate nel file requirements.txt
. dev_appserver
ti consente inoltre di testare la funzionalità configurata tramite app.yaml
. Ad esempio, puoi verificare la capacità della tua app di pubblicare file statici. Quando
dev_appserver
è in esecuzione, eventuali modifiche a requirements.txt
e app.yaml
riavvio automaticamente l'app in modo da riflettere queste modifiche. Ciò potrebbe comportare un ritardo temporaneo durante il download e l'installazione delle dipendenze.
Gestione e routing delle istanze nel server di sviluppo
Scoprire gli indirizzi delle istanze
Il server di sviluppo locale crea tutte le istanze di scalabilità manuale all'avvio. Le istanze per i servizi di scalabilità automatica e di base vengono gestite in modo dinamico. Il server assegna una porta a ogni servizio e i client possono fare affidamento sul server per il bilanciamento del carico e la selezione automatica di un'istanza. Le assegnazioni delle porte per indirizzare ciascun servizio vengono visualizzate nello stream di messaggi di log del server.
Di seguito sono riportate le porte per un'app che definisce tre servizi:
INFO Starting module "default" running at: http://localhost:8084 INFO Starting module "service1" running at: http://localhost:8082 INFO Starting module "service2" running at: http://localhost:8083
Quando utilizzi l'indirizzo di un servizio, ad esempio http://localhost:8082/
, il
server crea o seleziona un'istanza del servizio e invia la richiesta a
questa istanza.
Il server assegna porte univoche a ogni istanza di un servizio. Puoi utilizzare il server amministrativo per rilevare queste porte. Esiste una porta univoca per il server amministrativo, che viene visualizzata nel log dei messaggi:
INFO Starting admin server at: http://localhost:8000
Questo indirizzo ti reindirizza alla console del server di amministrazione. Fai clic su Istanze per visualizzare lo stato dinamico delle istanze della tua app.
Viene visualizzata una voce separata per ogni istanza manuale e di base. I numeri di istanza sono link con indirizzi di porta univoci per ogni istanza. Fai clic sul link per inviare una richiesta direttamente a quell'istanza.
Invia file
Se la tua app include un file dispatch.yaml
, lo stream di messaggi di log include una porta di Dispatcher:
INFO Starting dispatcher running at: http://localhost:8080
Le richieste a questa porta vengono instradate in base alle regole nel file di invio.
Il server non supporta le regole dei file dispatch.yaml
che includono nomi host, ad esempio url: "customer1.myapp.com/*"
. Le regole con pattern di percorso relativi (url: "*/fun"
) funzionano, quindi puoi utilizzare URL come
http://localhost/fun/mobile
per raggiungere le istanze. Il server segnala un errore nel
flusso di log se provi ad avviare un'applicazione con un file dispatch.yaml
che contiene regole basate sull'host.
Utilizzare Cloud Trace
Cloud Trace è utile per capire come le richieste si propagano nell'applicazione. Puoi analizzare informazioni dettagliate sulla latenza per una singola richiesta o visualizzare la latenza aggregata per l'intera applicazione.
Per visualizzare i dettagli delle tracce in Cloud Trace, puoi seguire la procedura per trovare ed esplorare le tracce. In Trace Explorer, puoi utilizzare i filtri per filtrare in base al servizio e alla versione di App Engine specifici.