ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o provincia, anche se alcuni ID regione possono essere simili ai codici paese e provincia 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.
Utilizza l'API Google App Engine Admin per eseguire il deployment delle versioni delle tue app nell'applicazione App Engine mediante richieste HTTP POST
.
Prima di iniziare
Per poter inviare la richiesta di deployment HTTP, devi poter autorizzare la richiesta HTTP, accedere ai file temporanei dell'app e disporre di un file di configurazione formattato JSON. Per risolvere i seguenti prerequisiti, consulta i seguenti argomenti:
Configura il tuo progetto Google Cloud e crea le credenziali.
Creazione del file di configurazione (
app.json
) per il tuo deployment.
Eseguire il deployment dell'app in App Engine con l'API Admin
Per eseguire il deployment di una versione dell'app nell'applicazione in App Engine:
Autorizza le tue richieste HTTP, ad esempio ottieni un token di accesso.
L'autorizzazione ad accedere all'API Admin può essere eseguita con diversi flussi OAuth, a seconda delle esigenze della tua app API. Per ulteriori informazioni, consulta la pagina relativa all'accesso all'API.
Invia una richiesta HTTP
POST
utilizzando il tuo token di accesso e l'API Admin per eseguire il deployment della tua versione nell'applicazione App Engine:Per eseguire il deployment di una versione, invia una richiesta HTTP
POST
che specifica il file di configurazione JSON e definisce unaVersion
risorsa del servizio di destinazione e dell'applicazione App Engine.Ad esempio, puoi utilizzare la seguente richiesta HTTP
POST
per eseguire il deployment della versione specificata nel file di configurazione JSON nel serviziodefault
dell'applicazioneMY_PROJECT_ID
:POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
Esempio di comando cURL:
curl -X POST -T "app.json" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions
Dove:
[MY_ACCESS_TOKEN]
è il token di accesso che hai ottenuto per autorizzare le richieste HTTP.[MY_PROJECT_ID]
è l'ID del progetto in cui vuoi eseguire il deployment della versione.
Esempio di risposta:
{ "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "insertTime": "2015-05-29T17:12:44.679Z", "method": "google.appengine.v1.Versions.CreateVersion", "target": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "user": "me@example.com" } "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85" }
Verifica che sia stato eseguito il deployment della tua versione nell'applicazione App Engine:
Visualizza lo stato dell'effettiva operazione di deployment:
La richiesta HTTP
POST
che hai usato nel passaggio precedente ha restituito il nome dell'operazione nel camponame
, che utilizzi con il metodoGET
della raccoltaapps.operations
per controllare lo stato dell'operazione di deployment.Ad esempio, se il campo
name
della risposta è:"name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85"
Quindi invii la seguente richiesta HTTP
GET
:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
Esempio di comando cURL:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
Dove
[MY_ACCESS_TOKEN]
è il tuo token di accesso e[MY_PROJECT_ID]
è l'ID del progetto in cui hai eseguito il deployment della versione.Esempio di risposta:
{ "done": true, "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "endTime": "2015-05-29T17:13:20.424Z", "insertTime": "2015-05-29T17:12:44.679Z", "method": "google.appengine.v1.Versions.CreateVersion", "target": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "user": "me@example.com" }, "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85", "response": { "@type": "type.googleapis.com/google.appengine.v1.Version", "creationTime": "2015-05-29T17:12:46.000Z", "deployer": "me@example.com", "id": "v1", "name": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "runtime": "python27", "servingStatus": "SERVING", "threadsafe": true, } }
Per ulteriori informazioni sul polling delle operazioni a lunga esecuzione, consulta il riferimento RPC google.longrun.
Verifica che la versione sia stata creata nell'applicazione App Engine:
Per visualizzare i dettagli della versione, utilizza il metodo
GET
della raccoltaapps.services.versions
. Devi specificare la versione di cui hai eseguito il deployment nella richiesta HTTPGET
, ad esempio:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
Esempio di comando cURL:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
Dove
[MY_ACCESS_TOKEN]
è il tuo token di accesso e[MY_PROJECT_ID]
è l'ID del progetto in cui hai eseguito il deployment della versione.Esempio di risposta:
{ "creationTime": "2015-05-29T17:12:46.000Z", "deployer": "me@example.com", "deployment": { "files": { "my-python-app.py": { "sha1Sum": "7cffbdaa9fcfa46e5e58269bfe336dd815de0566", "sourceUrl": "https://storage.googleapis.com/[YOUR_BUCKET_ID]/my-application/logo.jpg", }, "logo.jpg": { "sha1Sum": "13f7ea1e24f7cd2de5c66660525f2b509da37c14", "sourceUrl": "https://storage.googleapis.com/[YOUR_BUCKET_ID]/my-application/my-python-app.py" } } }, "handlers": [ { "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", "login": "LOGIN_OPTIONAL", "script": { "scriptPath": "my-python-app.application", }, "securityLevel": "SECURE_OPTIONAL", "urlRegex": "/.*" } ] "id": "v1", "name": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "runtime": "python27", "servingStatus": "SERVING", "threadsafe": true, }
GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1?view=FULL
(Facoltativo) Per avviare il browser e visualizzare l'app all'indirizzo
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
, puoi eseguire questo comando:gcloud app browse -v [MY_VERSION_ID]
Configura la quantità di traffico che dovrebbe ricevere la versione di cui hai appena eseguito il deployment.
Per impostazione predefinita, la versione iniziale di cui esegui il deployment nell'applicazione App Engine viene configurata automaticamente per ricevere il 100% del traffico. Tuttavia, tutte le versioni successive di cui esegui il deployment nella stessa applicazione App Engine devono essere configurate manualmente, altrimenti non riceveranno traffico.
Per i dettagli su come configurare il traffico per le versioni, consulta Migrazione e suddivisione del traffico.
Deployment di versioni e servizi aggiuntivi
I passaggi per il deployment delle versioni successive dell'app, inclusa la creazione di servizi aggiuntivi, sono quasi identici a quelli descritti in questa attività. Se vuoi sostituire la versione attualmente in esecuzione nella tua applicazione App Engine o vuoi aggiungere altri servizi, puoi eseguire il deployment di nuove versioni dopo aver apportato alcune modifiche ai file di configurazione.
Vedi i seguenti esempi su come eseguire il deployment delle versioni aggiuntive nell'applicazione App Engine. Ricorda che, dopo aver eseguito il deployment delle versioni, devi configurare il relativo traffico.
Esempio: deployment di versioni aggiuntive
Se una versione precedente o errata è in esecuzione in App Engine, puoi sostituirla eseguendo il deployment di un'altra versione nell'applicazione App Engine e quindi instradando il traffico a quella versione. Ad esempio, dopo aver modificato il codice sorgente dell'app, puoi modificare il valore di version
nel file app.yaml
, creare un nuovo file app.json
, quindi eseguire il deployment di una versione v2
dell'app con un'altra richiesta HTTP POST
:
Esempio di file app.yaml
aggiornato:
service: default
version: v2
runtime: python27
threadsafe: true
handlers:
- url: /.*
script: my-python-app.application
Esempio della richiesta HTTP POST
per la versione v2
:
POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
Dopo aver completato i passaggi per assicurarti che il deployment della versione sia stato eseguito correttamente, puoi inviare una richiesta HTTP PATCH
per instradare tutto il traffico alla nuova versione, ad esempio:
PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v2": "1" } } }
Per informazioni sul routing del traffico, consulta Migrazione e suddivisione del traffico.
Esempio: deployment di più servizi
Se disponi di una versione v1
nella tua applicazione App Engine e vuoi eseguire il deployment di un servizio aggiuntivo, ad esempio backend
, esegui gli stessi passaggi del deployment.
Ad esempio, per eseguire il deployment della versione v1
che crea il servizio backend
:
- Crea il nuovo codice e i nuovi file di origine per il servizio
backend
. - Conserva le risorse dell'applicazione per il tuo servizio
backend
in un bucket Cloud Storage. - Crea il file di configurazione
backend/app.json
. Utilizza le richieste HTTP per eseguire il deployment della versione
v1
del serviziobackend
nell'applicazione App Engine:Esempio di richiesta HTTP
POST
:POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/backend/versions backend/app.json
Esempio di richiesta HTTP
GET
per verificare che sia stata creata la versionev1
nel serviziobackend
:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
Esempio di risposta:
{ "services": [ { "name": "apps/[MY_PROJECT_ID]/services/default", "id": "default", "split": { "allocations": { "v2": 1 } } }, { "name": "apps/[MY_PROJECT_ID]/services/backend", "id": "backend", "split": { "allocations": { "v1": 1 } } } ] }