Deployment delle versioni dell'app in App Engine

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.

Usa l'API App Engine Admin per eseguire il deployment delle versioni delle tue app a livello di programmazione nel tuo all'applicazione App Engine tramite richieste POST HTTP.

Prima di iniziare

Prima di poter inviare la richiesta di deployment HTTP, devi poter autorizzare la richiesta HTTP, accedere ai file temporanei della tua app e avere un file JSON formattato di configurazione del deployment. Consulta i seguenti argomenti per informazioni su questi prerequisiti:

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:

  1. Autorizzare le richieste HTTP, ad esempio ottenere un token di accesso.

    L'autorizzazione dell'accesso all'API Admin può essere eseguita con OAuth a seconda delle esigenze della tua app con API. Per ulteriori informazioni, vedi Accesso all'API.

  2. Invia una richiesta POST HTTP utilizzando il tuo token di accesso e 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 una Version risorsa del servizio di destinazione e dell'applicazione App Engine.

    Ad esempio, puoi utilizzare la seguente richiesta POST HTTP per eseguire il deployment specificata nel file di configurazione JSON, alle default servizio dell'applicazione MY_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 tue 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"
    }
    
  3. Verifica che sia stato eseguito il deployment della versione nell'applicazione App Engine:

    1. Visualizza lo stato dell'operazione di deployment effettiva:

      La richiesta HTTP POST utilizzata nel passaggio precedente ha restituito il nome dell'operazione nel campo name, che viene utilizzato con il metodo GET della raccolta apps.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, invia la seguente richiesta GET HTTP:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
      

      Comando cURL di esempio:

      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 token di accesso e [MY_PROJECT_ID] è l'ID del progetto in cui hai eseguito il deployment della versione.

      Risposta di esempio:

      {
        "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 scoprire di più sul polling delle operazioni di lunga durata, consulta la documentazione di riferimento RPC di google.longrunning.

    2. Verifica che la versione sia stata creata nell'applicazione App Engine:

      Per visualizzare i dettagli della versione, utilizza il metodo GET della raccolta apps.services.versions. Devi specificare la versione di cui hai eseguito il deployment nella richiesta HTTP GET, ad esempio:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
      

      Comando cURL di esempio:

      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 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
      
  4. (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 il seguente comando:

    gcloud app browse -v [MY_VERSION_ID]
    
  5. Configura il volume 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'App Engine l'applicazione 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 informazioni dettagliate su come configurare il traffico per le versioni, consulta Eseguire la migrazione e suddividere il traffico.

Deployment di versioni e servizi aggiuntivi

I passaggi per eseguire il deployment di versioni successive della tua app, inclusa la creazione servizi aggiuntivi, sono quasi identici ai passaggi di deployment descritti in questa attività. Se desideri sostituire la versione corrente in esecuzione nel tuo App Engine o, se vuoi aggiungere altri servizi, puoi eseguire il deployment nuove versioni dopo aver apportato alcune modifiche ai file di configurazione.

Guarda gli esempi seguenti su come eseguire il deployment di versioni aggiuntive della tua app un'applicazione Compute Engine. Ricorda che, dopo aver eseguito il deployment delle versioni, devi configurare il loro traffico.

Esempio: deployment di versioni aggiuntive

Se in App Engine è in esecuzione una versione obsoleta o difettosa, puoi sostituirla eseguendo il deployment di un'altra versione nell'applicazione App Engine, indirizzando il traffico a quella versione. Ad esempio, dopo aver modificato il codice sorgente della tua app, puoi modificare il valore di version nel file app.yaml, creare un nuovo file app.json e implementare una versione v2 dell'app con un'altra richiesta POST HTTP:

Esempio di file app.yaml aggiornato:

  service: default
  version: v2
  runtime: python27
  threadsafe: true
  handlers:
  - url: /.*
    script: my-python-app.application

Esempio di richiesta HTTP POST per la versione v2:

  POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json

Dopo aver eseguito i passaggi per assicurarti che il deployment della versione sia stato eseguito correttamente, puoi inviare una richiesta PATCH HTTP per instradare tutto il traffico alla nuova versione, esempio:

  PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v2": "1" } } }

Per informazioni su come indirizzare il traffico, consulta Migrazione e suddivisione Traffico.

Esempio: implementazione di più servizi

Se hai una versione v1 in esecuzione nell'applicazione App Engine e vuoi per eseguire il deployment di un servizio aggiuntivo, ad esempio backend, passaggi di deployment.

Ad esempio, per eseguire il deployment della versione v1 che crea il servizio backend:

  1. Crea il nuovo codice e i file sorgente per il servizio backend.
  2. Imposta temporaneamente le risorse dell'applicazione per il tuo servizio backend in un nel bucket Cloud Storage.
  3. Crea il file di configurazione backend/app.json.
  4. Utilizza le richieste HTTP per eseguire il deployment della versione v1 del servizio backend nel tuo Applicazione App Engine:

    Esempio di richiesta HTTP POST:

    POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/backend/versions backend/app.json
    

    Richiesta GET HTTP di esempio per verificare che la versione v1 nel servizio backend sia stata creata:

    GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
    

    Risposta di esempio:

    {
      "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
            }
          }
        }
      ]
    }
    

Passaggi successivi