Cara Merutekan Permintaan

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.

Halaman ini menjelaskan cara permintaan HTTP dari pengguna menjangkau versi layanan yang sesuai. Permintaan dapat dirutekan dengan cara berikut:

Jika Anda menguji aplikasi menggunakan server pengembangan lokal, fitur perutean dan pengiriman yang tersedia sedikit berbeda. Untuk membuat URL secara terprogram yang berfungsi dengan server produksi dan pengembangan, gunakan metode get_host.

Lihat pemilihan rute di server pengembangan untuk mempelajari lebih lanjut.

Pemilihan rute dengan URL

Setelah aplikasi Anda berjalan di App Engine, Anda dapat menggunakan URL berikut untuk mengirim permintaan HTTP ke aplikasi:
https://PROJECT_ID.REGION_ID.r.appspot.com

dengan PROJECT_ID adalah ID project Google Cloud yang berisi aplikasi.

URL ini mengirimkan permintaan ke layanan default aplikasi pada versi yang telah Anda konfigurasi untuk menerima traffic.

URL untuk layanan dan versi

Jika Anda membuat lebih dari satu layanan di aplikasi, setiap layanan memiliki URL-nya sendiri. Setiap versi layanan juga memiliki URL-nya sendiri, sehingga Anda dapat men-deploy dan menguji versi baru sebelum mengonfigurasi versi tersebut untuk menerima traffic.

URL untuk layanan dan versi tertentu ada dalam bentuk berikut:

VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

Anda dapat menghilangkan VERSION-dot- jika tidak perlu menargetkan versi tertentu.

Untuk mengambil ID layanan dan versi aplikasi, Anda dapat menggunakan salah satu alat berikut:

Konsol

Di konsol Google Cloud, Anda dapat melihat halaman Instances, Services, dan Versions yang sesuai.

gcloud

Jalankan perintah gcloud app instances list untuk mencantumkan ID resource dalam project Google Cloud tertentu.

API

Untuk mengambil ID resource secara terprogram, lihat metode list di Admin API.

Contoh URL

Berikut adalah beberapa contoh URL untuk App Engine, yang menunjukkan domain appspot.com yang ditetapkan App Engine untuk aplikasi Anda dan domain kustom yang dapat Anda siapkan untuk aplikasi Anda ini.

  • Mengirim permintaan ke instance layanan default yang tersedia:
    
    https://PROJECT_ID.REGION_ID.r.appspot.com
    https://CUSTOM_DOMAIN

    Permintaan diterima oleh semua versi yang dikonfigurasi untuk traffic di layanan default.

  • Mengirim permintaan ke instance layanan tertentu yang tersedia:
    
    https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
    https://SERVICE_ID.CUSTOM_DOMAIN

    Permintaan diterima oleh semua versi yang dikonfigurasi untuk traffic di layanan yang ditargetkan. Jika layanan yang Anda targetkan tidak ada, permintaan akan dirutekan dengan ringan.

  • Mengirim permintaan ke instance yang tersedia dari versi tertentu di
    Layanan default:
    
    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
    https://VERSION_ID.CUSTOM_DOMAIN

    Jika layanan tidak ditargetkan, permintaan akan dikirim ke layanan default.

Pemilihan rute ringan

Jika permintaan cocok dengan bagian PROJECT_ID.REGION_ID.r.appspot.com nama host, tetapi menyertakan layanan, versi, atau nama instance yang tidak ada, permintaan tersebut akan dirutekan ke layanan default. Pemilihan rute ringan tidak berlaku untuk domain kustom; permintaan kepadanya akan menampilkan kode status HTTP 404 jika nama host tidak valid.

Pemilihan rute yang ditargetkan

Pola URL berikut dijamin akan mencapai targetnya, jika ada. Permintaan ini tidak pernah dicegat dan dirutekan ulang oleh pola yang telah Anda tentukan di file dispatch:

  • Mengirim permintaan ke instance layanan dan versi tertentu yang tersedia:
    
    https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
    https://VERSION_ID.SERVICE_ID.PROJECT_ID.CUSTOM_DOMAIN
  • Jika menggunakan layanan yang diskalakan secara manual, Anda dapat menargetkan dan mengirim permintaan ke instance dengan menyertakan ID instance. ID instance adalah bilangan bulat dalam rentang dari 0 hingga jumlah total instance yang berjalan, dan dapat ditentukan sebagai berikut:

    Mengirim permintaan ke layanan dan versi tertentu dalam instance tertentu:

    https://INSTANCE_ID-dot-VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
    https://INSTANCE_ID.VERSION_ID.SERVICE_ID.CUSTOM_DOMAIN

Memilih rute dengan file dispatch

Anda dapat membuat file dispatch untuk mengganti aturan pemilihan rute berbasis URL App Engine dan menentukan aturan pemilihan rute kustom Anda sendiri. Dengan file dispatch, Anda dapat mengirim permintaan masuk ke layanan tertentu berdasarkan jalur atau nama host di URL permintaan.

Membuat file dispatch

Untuk membuat file dispatch:

  1. Buat file bernama dispatch.yaml, baik di root direktori project Anda maupun di direktori root layanan default Anda.

  2. Tentukan aturan rute dalam file seperti yang dijelaskan, lihat referensi dispatch.yaml.

Perhatikan hal-hal berikut terkait aturan pemilihan rute:

  • Anda dapat menentukan hingga 20 aturan pemilihan rute. Setiap aturan harus berisi elemen url dan service.
  • Aturan tersebut harus menggunakan pola URL HTTP yang menyertakan notasi "." untuk memisahkan subdomain. URL yang ditentukan dengan notasi "-dot-" HTTPS tidak didukung.
  • Aturan ini juga berlaku untuk URL yang Anda tentukan dalam file cron.

Misalnya, Anda dapat membuat file pengiriman untuk merutekan permintaan seluler seperti https://simple-sample.uc.r.appspot.com/mobile/ ke frontend seluler, dan merutekan permintaan pekerja seperti https://simple-sample.uc.r.appspot.com/work/ ke backend statis:

dispatch:
  # Send all mobile traffic to the mobile frontend.
  - url: "*/mobile/*"
    service: mobile-frontend

  # Send all work to the one static backend.
  - url: "*/work/*"
    service: static-backend

Men-deploy file dispatch

Untuk men-deploy file dispatch, jalankan perintah berikut:

    gcloud app deploy dispatch.yaml

Pemilihan rute dengan Cloud Load Balancing

Cloud Load Balancing adalah produk terpisah yang memungkinkan konfigurasi jaringan lanjutan untuk semua aplikasi Anda yang berjalan di Google Cloud.

Saat Load Balancing HTTP(S) diaktifkan untuk aplikasi serverless, Anda dapat:

  • Konfigurasi aplikasi serverless untuk menyalurkan dari alamat IP IPv4 dan/atau IPv6 khusus yang tidak digunakan bersama dengan layanan lain.

  • Gunakan kembali sertifikat SSL dan kunci pribadi yang sama dengan yang Anda gunakan untuk Compute Engine, Google Kubernetes Engine, dan Cloud Storage. Dengan demikian, Anda tidak perlu mengelola sertifikat terpisah untuk aplikasi serverless.

Load balancer tidak mengganggu atau berinteraksi dengan aturan pemilihan rute di file dispatch.yaml Anda. Aturan dispatch.yaml tidak dievaluasi hingga NEG serverless mengarahkan traffic ke App Engine.

Perhatikan hal-hal berikut:

  • Sebaiknya gunakan kontrol traffic masuk sehingga aplikasi Anda hanya menerima permintaan yang dikirim dari load balancer (dan VPC jika Anda menggunakannya). Jika tidak, pengguna dapat menggunakan URL App Engine aplikasi Anda untuk mengabaikan load balancer, kebijakan keamanan Google Cloud Armor, sertifikat SSL, dan kunci pribadi yang diteruskan melalui load balancer.

Perutean di server pengembangan

Menemukan alamat instance

Server pengembangan lokal membuat semua instance penskalaan manual saat startup. Instance untuk layanan penskalaan otomatis dan dasar dikelola secara dinamis. Server menetapkan port untuk setiap layanan, dan klien dapat bergantung pada server untuk melakukan load-balancing dan memilih instance secara otomatis. Penetapan port untuk menangani setiap layanan akan muncul di aliran data pesan log server. Berikut adalah port untuk aplikasi yang menentukan tiga layanan (jenis penskalaan setiap layanan tidak relevan):

INFO Starting module "default" running at: http://localhost:8084
INFO Starting module "service1" running at: http://localhost:8082
INFO Starting module "service2" running at: http://localhost:8083

Saat Anda menggunakan alamat layanan (misalnya, http://localhost:8082/), server akan memilih (atau membuat) sebuah instance layanan dan mengirim permintaan ke instance tersebut.

Server menetapkan port unik ke setiap instance layanan. Untuk menemukan port ini, Anda perlu menggunakan server admin. Ada port unik untuk server admin, yang muncul di log pesan:

INFO Starting admin server at: http://localhost:8000

Alamat ini akan mengarahkan Anda ke konsol server admin. Dari sana, Anda dapat mengklik Instance untuk melihat status dinamis instance aplikasi Anda:

Screenshot konsol admin dev_appserver

Entri terpisah akan muncul untuk setiap instance manual dan dasar. Nomor instance adalah link dengan alamat port unik untuk setiap instance. Anda dapat mengarahkan kursor ke link untuk melihat port yang ditetapkan untuk instance tersebut, atau mengklik link untuk mengirim permintaan langsung ke instance tersebut.

Mengirim file

Jika aplikasi Anda menyertakan file dispatch.yaml, aliran pesan log akan menyertakan port dispatcher:

INFO Starting dispatcher running at: http://localhost:8080

Permintaan ke port ini dirutekan sesuai dengan aturan dalam file dispatch. Server tidak mendukung aturan file dispatch.yaml yang menyertakan nama host (misalnya, url: "customer1.myapp.com/*"). Aturan dengan pola jalur relatif (url: "*/fun") akan berfungsi, sehingga Anda dapat menggunakan URL seperti http://localhost/fun/mobile untuk menjangkau instance. Server akan melaporkan error dalam aliran log jika Anda mencoba memulai aplikasi dengan file dispatch.yaml yang berisi aturan berbasis host.

Membatasi akses ke layanan

Semua layanan bersifat publik secara default. Jika Anda ingin membatasi akses ke layanan, tambahkan elemen login: admin ke pengendali.

Detail tambahan tentang URL App Engine

Memahami ID Region di URL

REGION_ID adalah kode singkat yang Google tetapkan 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 provinsi dan negara 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 ini, ID region bersifat opsional dalam URL.

Anda dapat menggunakan alat berikut untuk melihat ID region aplikasi Anda:

Konsol

Di konsol Google Cloud, Anda dapat melihat URL untuk Instances, Services, dan Versions aplikasi Anda.

Semua URL ini menyertakan ID region.

gcloud

Saat Anda men-deploy aplikasi atau layanan, perintah gcloud app deploy akan menampilkan URL setelah deployment berhasil. URL ini menyertakan ID region.

Untuk melihat URL layanan yang telah di-deploy:

  1. Masukkan perintah gcloud app versions list untuk mencantumkan versi layanan tertentu. Misalnya, untuk mencantumkan versi layanan default, masukkan gcloud app versions list --service=default.

  2. Masukkan perintah gcloud app versions describe. Output perintah tersebut mencakup URL versi dengan ID region aplikasi. Misalnya, untuk menjelaskan versi 20191023t101741 untuk layanan default, masukkan gcloud app versions describe 20191023t101741 --service=default

Nama domain disertakan dalam data permintaan

Nama domain yang digunakan untuk permintaan disertakan dalam data permintaan yang diteruskan ke aplikasi Anda. Oleh karena itu, Anda dapat menggunakan data permintaan untuk mengontrol cara aplikasi merespons berdasarkan nama domain dalam permintaan. Misalnya, jika ingin mengalihkan ke domain resmi, Anda dapat membuat kode aplikasi untuk memeriksa header permintaan Host, lalu merespons sesuai dengan nama domain tersebut.