Ogni versione di un servizio è definita in un file .yaml, che indica il nome del servizio e della versione. Il file YAML di solito ha lo stesso nome del servizio che definisce, ma non è un requisito. Se esegui il deployment di più versioni di un servizio, puoi creare più file YAML nella stessa directory, uno per ogni versione.
In genere, crei una directory per ogni servizio, che contiene i file YAML del servizio e il codice sorgente associato. I file di configurazione facoltativi a livello di applicazione (dispatch.yaml, cron.yaml, index.yaml e queue.yaml) sono inclusi nella directory dell'app di primo livello. L'esempio seguente mostra tre servizi.
In service1 e service2, i file sorgente si trovano allo stesso livello del file YAML. In service3, sono presenti file YAML per due versioni.
Per i progetti piccoli e semplici, tutti i file dell'app possono trovarsi in una sola directory:
Ogni file YAML deve includere un parametro di versione. Per definire il servizio predefinito,
puoi includere esplicitamente il parametro service: default o omettere il parametro
del servizio dal file.
Il file di configurazione di ogni servizio definisce il tipo di scalabilità e la classe di istanza
per un servizio/versione specifico. A seconda del tipo di scalabilità specificato, vengono utilizzati parametri di scalabilità diversi. Se non specifichi la scalabilità, quella automatica
è l'impostazione predefinita. Le impostazioni di scalabilità e della classe di istanza sono descritte nella sezione app.yaml
di riferimento.
Per ogni servizio puoi anche specificare impostazioni che mappano le richieste URL a script specifici e identificano i file statici per una migliore efficienza del server. Queste impostazioni
sono incluse anche nel file YAML e sono descritte nella sezione
app.yaml di riferimento.
Il servizio predefinito
Ogni applicazione ha un solo servizio predefinito. Puoi definire il servizio predefinito
in app.yaml con l'impostazione
service: default, ma non è necessario. Tutti i parametri di configurazione
pertinenti ai servizi possono essere applicati al servizio predefinito.
File di configurazione facoltativi
Questi file di configurazione controllano le funzionalità facoltative che si applicano a tutti i servizi di un'app:
dispatch.yamlignora le regole di routing predefinite inviando le richieste in entrata a un servizio specifico in base al percorso o al nome host nell'URL.queue.yamlconfigura sia le code in modalità push sia quelle in modalità pull.index.yamlspecifica gli indici necessari alla tua app se utilizzi le query Datastore.cron.yamlconfigura attività programmate ricorrenti eseguite in orari specifici o a intervalli regolari.
Per eseguire il deployment degli aggiornamenti di questi file di configurazione in App Engine, esegui il comando seguente dalla directory in cui si trovano:
gcloud app deploy [CONFIG_FILE]
Esempio
Ecco un esempio di come configurare i file YAML per un'applicazione con tre servizi: un servizio predefinito che gestisce le richieste web, più altri due servizi che gestiscono le richieste mobile e l'elaborazione di backend.
Inizia definendo un file di configurazione denominato app.yaml che gestirà tutte le richieste
relative al web:
runtime: php55
api_version: 1
threadsafe: true
Se l'ID progetto della console Google Cloud per questa app è simple-sample, questa configurazione creerà un servizio predefinito con scalabilità automatica e un indirizzo pubblico https://simple-sample.uc.r.appspot.com.
Supponiamo ora di voler creare un servizio per gestire le richieste web mobile.
Per il bene degli utenti di dispositivi mobili (in questo esempio), la latenza massima in attesa sarà
di un solo secondo e avremo sempre almeno due istanze inattive. Per configurare
questa opzione, crea un file di configurazione mobile-frontend.yaml con il
seguente contenuto:
service: mobile-frontend
runtime: php55
api_version: 1
threadsafe: true
automatic_scaling:
min_idle_instances: 2
max_pending_latency: 1s
Il servizio creato da questo file sarà quindi raggiungibile all'indirizzo https://mobile-frontend-dot-simple-sample.uc.r.appspot.com.
Infine, aggiungi un servizio chiamato my-service per la gestione del lavoro di backend statico.
Potrebbe trattarsi di un job continuo che esporta i dati da Datastore a BigQuery. La
quantità di lavoro è relativamente fissa, quindi hai bisogno di un solo servizio residente
in un determinato momento. Inoltre, questi job dovranno gestire una grande quantità di elaborazione in memoria, quindi ti serviranno servizi con una configurazione di memoria maggiore. Per configurare questa opzione, crea un file di configurazione my-service.yaml con i seguenti contenuti.
service: my-service
runtime: php55
api_version: 1
threadsafe: true
instance_class: B8
manual_scaling:
instances: 1
Il servizio creato da questo file sarà quindi raggiungibile all'indirizzo
https://my-service-dot-simple-sample.uc.r.appspot.com.
Nota l'impostazione manual_scaling:. Il parametro instances: indica ad App
Engine quante istanze creare per questo servizio.