Men-deploy Versi Aplikasi Anda ke App Engine

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

Gunakan App Engine Admin API untuk men-deploy versi aplikasi Anda secara terprogram ke aplikasi App Engine melalui permintaan POST HTTP.

Sebelum memulai

Sebelum dapat mengirim permintaan deployment HTTP, Anda harus dapat mengizinkan permintaan HTTP, mengakses file bertahap aplikasi Anda, dan memiliki file konfigurasi berformat JSON. Lihat topik berikut untuk membantu Anda dengan prasyarat ini:

Men-deploy aplikasi Anda ke App Engine dengan Admin API

Untuk men-deploy versi aplikasi Anda ke aplikasi di App Engine:

  1. Mengizinkan permintaan HTTP Anda, misalnya mendapatkan token akses.

    Mengizinkan akses ke Admin API dapat dilakukan dengan alur OAuth yang berbeda, bergantung pada kebutuhan aplikasi API Anda. Untuk informasi selengkapnya, lihat Mengakses API.

  2. Kirim permintaan POST HTTP menggunakan token akses Anda dan Admin API untuk men-deploy versi ke aplikasi App Engine Anda:

    Untuk men-deploy versi, kirim permintaan POST HTTP yang menentukan file konfigurasi JSON dan menentukan resource Version pada layanan target dan aplikasi App Engine.

    Misalnya, Anda dapat menggunakan permintaan POST HTTP berikut untuk men-deploy versi yang ditentukan dalam file konfigurasi JSON, ke layanan default aplikasi MY_PROJECT_ID:

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

    Contoh perintah 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
    

    Dengan keterangan:

    • [MY_ACCESS_TOKEN] adalah token akses yang Anda dapatkan untuk mengizinkan permintaan HTTP Anda.
    • [MY_PROJECT_ID] adalah ID project tempat Anda ingin men-deploy versi.

    Contoh respons:

    {
      "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. Pastikan versi Anda telah di-deploy ke aplikasi App Engine:

    1. Lihat status operasi deployment yang sebenarnya:

      Permintaan POST HTTP yang Anda gunakan di langkah sebelumnya akan menampilkan nama operasi di kolom name, yang digunakan bersama metode GET dari koleksi apps.operations untuk memeriksa status operasi deployment.

      Misalnya, jika kolom name respons adalah:

      "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85"
      

      Kemudian, kirim permintaan GET HTTP berikut:

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

      Contoh perintah cURL:

      curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
      

      Dengan [MY_ACCESS_TOKEN] sebagai token akses Anda dan [MY_PROJECT_ID] sebagai ID project tempat Anda men-deploy versi.

      Contoh respons:

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

      Untuk mempelajari lebih lanjut cara melakukan polling operasi yang berjalan lama, lihat referensi RPC google.longrunning.

    2. Pastikan versi telah dibuat di aplikasi App Engine Anda:

      Untuk melihat detail tentang versi, Anda dapat menggunakan metode GET dari koleksi apps.services.versions. Anda harus menentukan versi yang di-deploy dalam permintaan GET HTTP, misalnya:

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

      Contoh perintah cURL:

      curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
      

      Dengan [MY_ACCESS_TOKEN] sebagai token akses Anda dan [MY_PROJECT_ID] sebagai ID project tempat Anda men-deploy versi.

      Contoh respons:

      {
        "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. Opsional: Untuk meluncurkan browser dan melihat aplikasi di https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com, Anda dapat menjalankan perintah berikut:

    gcloud app browse -v [MY_VERSION_ID]
    
  5. Konfigurasikan jumlah traffic yang seharusnya diterima oleh versi yang baru saja Anda deploy.

    Secara default, versi awal yang Anda deploy ke aplikasi App Engine akan otomatis dikonfigurasi untuk menerima 100% traffic. Namun, semua versi berikutnya yang Anda deploy ke aplikasi App Engine yang sama harus dikonfigurasi secara manual agar dapat menerima traffic.

    Untuk mengetahui detail tentang cara mengonfigurasi traffic untuk versi Anda, baca bagian Memigrasi dan Memisahkan Traffic.

Men-deploy versi dan layanan tambahan

Langkah-langkah untuk men-deploy versi aplikasi Anda berikutnya, termasuk membuat layanan tambahan, hampir sama dengan langkah deployment yang dibahas dalam tugas ini. Jika ingin mengganti versi saat ini yang berjalan di aplikasi App Engine Anda, atau jika ingin menambahkan layanan lain, Anda dapat men-deploy versi baru setelah membuat beberapa modifikasi pada file konfigurasi.

Lihat contoh berikut untuk mengetahui cara men-deploy versi tambahan ke aplikasi App Engine Anda. Ingat, setelah men-deploy versi, Anda perlu mengonfigurasi traffic-nya.

Contoh: Men-deploy versi tambahan

Jika versi lama atau yang salah berjalan di App Engine, Anda dapat mengganti versi tersebut dengan men-deploy versi lain ke aplikasi App Engine Anda, lalu melakukan perutean traffic ke versi tersebut. Misalnya, setelah memodifikasi kode sumber aplikasi, Anda dapat mengubah nilai version dalam file app.yaml, membuat file app.json baru, lalu men-deploy versi v2 aplikasi Anda dengan permintaan POST HTTP lain:

Contoh file app.yaml yang diperbarui:

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

Contoh permintaan HTTP POST untuk versi v2:

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

Setelah melakukan langkah-langkah untuk memastikan versi berhasil di-deploy, Anda dapat mengirim permintaan PATCH HTTP untuk melakukan perutean semua traffic ke versi baru, misalnya:

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

Untuk informasi tentang cara merutekan traffic, lihat Memigrasikan dan Memisahkan Traffic.

Contoh: Men-deploy beberapa layanan

Jika Anda memiliki versi v1 yang berjalan di aplikasi App Engine dan ingin men-deploy layanan tambahan, misalnya backend, lakukan langkah-langkah deployment yang sama.

Misalnya, untuk men-deploy versi v1 yang membuat layanan backend:

  1. Buat kode dan file sumber baru untuk layanan backend.
  2. Tempatkan resource aplikasi untuk layanan backend Anda di bucket Cloud Storage.
  3. Buat file konfigurasi backend/app.json.
  4. Gunakan permintaan HTTP untuk men-deploy versi v1 layanan backend ke aplikasi App Engine Anda:

    Contoh permintaan POST HTTP:

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

    Contoh permintaan GET HTTP untuk memverifikasi bahwa versi v1 dalam layanan backend telah dibuat:

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

    Contoh respons:

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

Langkah selanjutnya