ID regione
REGION_ID è un codice abbreviato assegnato da Google
in base alla regione selezionata al momento della creazione dell'app. Il codice non
corrispondono a un paese o a una provincia, anche se potrebbero essere visualizzati alcuni ID regione
in modo simile ai codici paese e provincia di uso comune. Per le app create dopo il giorno
Febbraio 2020, REGION_ID.r è incluso in
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.
Gestisci il volume di traffico ricevuto da una versione della tua applicazione per eseguire la migrazione o la suddivisione del traffico.
La migrazione del traffico cambia facilmente il routing delle richieste, spostandosi gradualmente traffico dalle versioni che attualmente ricevono traffico verso una o più versioni da te specificati.
La suddivisione del traffico distribuisce una percentuale di traffico alle versioni della tua applicazione. Puoi suddividere il traffico per indirizzare il 100% del traffico a una singola versione o per instradare percentuali di traffico a più versioni. Suddivisione del traffico a due o più versioni ti consente di eseguire test A/B tra le versioni e controlla il ritmo durante l'implementazione delle funzionalità.
Ricorda: la suddivisione del traffico viene applicata agli URL che non hanno come target esplicito una versione. Ad esempio, i seguenti URL suddividono il traffico perché hanno come target tutte le versioni disponibili all'interno del servizio specificato:
[MY_PROJECT_ID].[REGION_ID].r.appspot.com- Distribuisce il traffico alle versioni del serviziodefault.[MY_SERVICE]-dot-[MY_PROJECT_ID].[REGION_ID].r.appspot.com- Distribuisce il traffico alle versioni del servizioMY_SERVICE.
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.
Per ulteriori informazioni, consulta la sezione Come vengono effettuate le richieste Routed.
Per eseguire manualmente la migrazione e la suddivisione del traffico per la console Google Cloud, consulta Migrazione del traffico e Suddivisione del traffico.
Prima di iniziare
La migrazione del traffico con l'API Admin si comporta diversamente dalla console Google Cloud. Per eseguire la migrazione del traffico con API Admin, devi essere in grado di autorizzare le richieste HTTP e le tue versioni devono soddisfare i requisiti di migrazione del traffico:
Requisiti per la migrazione del traffico (migrateTraffic=true):
Il tuo account utente deve includere i requisiti privilegiati prima di poter configurare il traffico.
La migrazione graduale del traffico non è supportata in App Engine un ambiente flessibile.
Per eseguire una migrazione graduale del traffico, le versioni di destinazione devono essere situate all'interno di istanze configurate per:
- Richieste di riscaldamento
-
Per informazioni sulla configurazione, consulta la documentazione di riferimento di app.yaml.
Migrazione o suddivisione del traffico
Per eseguire la migrazione o suddividere il traffico tra le versioni della tua app:
Autorizzare le richieste HTTP, ad esempio ottenere un token di accesso.
L'autorizzazione di accesso all'API Admin può essere eseguita con diversi flussi OAuth, a seconda delle esigenze dell'app API. Per ulteriori informazioni, consulta Accedere all'API.
Utilizza il metodo
patchdella raccoltaapps.servicesper aggiornare la configurazione della versione per eseguire la migrazione del traffico o configurare la suddivisione del traffico. La seguente richiesta HTTPPATCHdi esempio ha aggregato intenzionalmente per una migliore leggibilità:PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/ ?updateMask=split { "split": { "shardBy": "[MY_SHARDBY_METHOD]", "allocations": { "[MY_APP_VERSION]": [MY_TRAFFIC_PERCENT] } } }Parametri e campi della richiesta HTTP:
updateMask: specifica su quale campo della configurazione aggiornamento.migrateTraffic=true(facoltativo): specifica di eseguire la migrazione del traffico gradualmente.split: definisce la configurazione del traffico verso le tue versioni.shardBy(facoltativo): definisce il metodo utilizzato per suddividere il traffico. Obbligatorio per la migrazione graduale del traffico (migrateTraffic=true). I valori validi sonoCOOKIEoIP.allocations: definisce una o più versioni e la percentuale di traffico distribuita a ciascuna versione. La versione e la percentuale di traffico sono specificate come coppiakey:value. La percentuale di traffico è specificata come frazione decimale e deve essere pari a 1. Esempio:"allocations": { "v1": 0.8, "v2": 0.2 }
Visualizza la raccolta
apps.servicesper informazioni dettagliate e l'elenco completo dei parametri e dei campi.Esempi di richieste HTTP:
Sposta tutto il traffico a una versione:
PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v1": 1 } } }Esegui la migrazione di tutto il traffico a
v2:PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split&migrateTraffic=true {"split": { "shardBy": "IP", "allocations": { "v2": 1 } } }Suddividi l'80% del traffico alla versione
v1e il 20% alla versionev2:PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split { "split": { "shardBy": "IP", "allocations": { "v1": 0.8, "v2": 0.2 } } }
Esempio: spostare il traffico a un'altra versione
Questo esempio mostra come spostare tutto il traffico in una nuova versione
di cui è appena stato eseguito il deployment. Ad esempio, se il server restituisce errori, hai corretto i
ha eseguito il deployment della nuova versione di v2 e ora vuoi reindirizzare tutto il traffico.
Per spostare tutto il traffico da v1 a v2:
Verifica che il 100% del traffico sia attualmente inviato alla versione
v1con il metodoGETdiapps.servicesdi Google Cloud.Richiesta HTTP
GETdi esempio:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/defaultComando cURL di esempio:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/defaultEsempio di risposta:
{ "name": "apps/[MY_PROJECT_ID]/services/default", "id": "default", "split": { "allocations": { "v1": 1 } } }
Aggiorna la configurazione di suddivisione del traffico in modo che tutto il traffico venga spostato nella nuova versione utilizzando il metodo
PATCHdiapps.servicespersonalizzata.Nella richiesta
PATCHHTTP, devi specificare il servizio all'interno della in cui sono in esecuzione entrambe le versioni, ad esempiodefault. Devi anche includere il campoupdateMaskcon il valoresplitper specificare che stai aggiornando la configurazione della suddivisione del traffico.Richiesta HTTP
PATCHdi esempio:PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v2": "1" } } }Comando cURL di esempio:
curl -X PATCH -H "Content-Type: application/json" -d "{ 'split': { 'allocations': { 'v2': '1' } } }" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=splitEsempio di risposta:
{ "name": "apps/[MY_PROJECT_ID]/operations/bdda402c-77a9-4c6d-b022-f2f69ba78420", "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "insertTime": "2015-05-29T17:25:30.413Z", "method": "com.google.appengine.v1.Services.UpdateService", "target": "apps/[MY_PROJECT_ID]/services/default", "user": "me@example.com" } }PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split&migrateTraffic=true {"split": { "shardBy": "IP", "allocations": { "v2": "1" } } }Assicurati che l'aggiornamento della configurazione sia stato completato:
Visualizza lo stato dell'operazione di aggiornamento con una richiesta HTTP
GET:Per visualizzare lo stato dell'operazione che esegue l'aggiornamento, utilizza il metodo
GETdella collezioneapps.operationsinsieme all'operazionenamerestituita nella risposta HTTP del passaggio precedente:Esempio di richiesta HTTP
GET:GET https://appengine.googleapis.com/v1/[OPERATION_NAME]Dove
[OPERATION_NAME]è il valore del camponamenella risposta della richiesta HTTPPATCHinviata nel passaggio precedente.Se la risposta HTTP del passaggio precedente include:
"name": "apps/[MY_PROJECT_ID]/operations/bdda402c-77a9-4c6d-b022-f2f69ba78420"Quindi, invia la seguente richiesta HTTP per visualizzare lo stato dell'operazione:
GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/bdda402c-77a9-4c6d-b022-f2f69ba78420Comando cURL di esempio:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/bdda402c-77a9-4c6d-b022-f2f69ba78420Al termine dell'operazione, puoi visualizzare i dettagli del servizio in cui si trova la versione con un'altra richiesta
GETHTTP:Richiesta HTTP
GETdi esempio:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/defaultComando cURL di esempio:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default
(Facoltativo) Ora puoi rimuovere la versione
v1difettosa dalla tua applicazione App Engine con una richiestaDELETEHTTP.Richiesta HTTP
DELETEdi esempio:DELETE https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1Esempio di comando cURL:
curl -X DELETE -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
Esempio: suddivisione del traffico tra versioni
Questo esempio mostra come configurare la suddivisione del traffico tra più
le versioni precedenti della tua applicazione. Ad esempio, hai appena creato le versioni v2 e
v3 che includono ciascuna nuove funzionalità, ma vuoi implementarle lentamente in modo che ciascuna riceva solo il 20% del traffico.
Dopo aver eseguito il deployment delle versioni
v2ev3nell'applicazione App Engine, utilizza la richiesta HTTPPATCHper configurare le tre versioni in modo che il traffico venga suddiviso in 60% perv1e 20% perv2ev3:Richiesta HTTP
PATCHdi esempio:PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split { "split": { "shardBy": "IP", "allocations": { "v1": "0.6", "v2": "0.2", "v3": "0.2" } } }Comando cURL di esempio:
curl -X PATCH -H "Content-Type: application/json" -d "{ 'split': { 'shardBy': 'IP', 'allocations': { 'v1': '0.6', 'v2': '0.2', 'v3': '0.2' } } }" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=splitDopo aver verificato il completamento dell'operazione, puoi inviare il prompt HTTP
GETrichiesta di verificare che il traffico sia stato suddiviso tra le tue versioni, Ad esempio:Esempio di richiesta HTTP
PATCH:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/defaultComando cURL di esempio:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/defaultRisposta di esempio:
{ "name": "apps/[MY_PROJECT_ID]/services/default", "id": "default", "split": { "allocations": { "v1": 0.6, "v2": 0.2, "v3": 0.2 } } }