Referensi app.yaml 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.

Anda mengonfigurasi setelan aplikasi App Engine di file konfigurasi app.yaml. File konfigurasi harus menentukan setidaknya entri runtime.

Setiap layanan di aplikasi Anda memiliki file app.yaml tersendiri, yang berfungsi sebagai deskriptor untuk deployment-nya. Anda harus membuat file app.yaml terlebih dahulu untuk layanan default sebelum dapat membuat dan men-deploy file app.yaml untuk layanan tambahan dalam aplikasi Anda. Untuk mempelajari lebih lanjut cara membuat struktur beberapa layanan di aplikasi Anda, lihat Membuat Struktur Layanan Web di App Engine.

Sintaks

Sintaksis app.yaml adalah format YAML.

Format YAML mendukung komentar. Baris yang dimulai dengan karakter tagar (#) akan diabaikan:

# This is a comment.

Pola jalur file dan URL menggunakan sintaksis ekspresi reguler POSIX yang diperluas, kecuali elemen pengkolasi dan class kolasi. Referensi balik ke pencocokan yang dikelompokkan (misalnya \1) didukung, begitu juga ekstensi Perl berikut: \w \W \s \S \d \D.

Contoh

Berikut adalah contoh file app.yaml:

runtime: python312

instance_class: F2

env_variables:
  BUCKET_NAME: "example-gcs-bucket"

handlers:
# Matches requests to /images/... to files in static/images/...
- url: /images
  static_dir: static/images

- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto

Elemen aplikasi dan runtime

Elemen Deskripsi
app_engine_apis

Opsional. Jika Anda ingin menggunakan layanan App Engine lama yang dipaketkan untuk runtime generasi kedua, atur kolom ini ke true.

build_env_variables

Opsional. Jika menggunakan runtime yang mendukung buildpack, Anda dapat menentukan variabel lingkungan build dalam file app.yaml.

Untuk mempelajari lebih lanjut, lihat Menggunakan variabel lingkungan build.

default_expiration

Opsional. Menetapkan periode cache default global untuk semua pengendali file statis aplikasi. Anda juga dapat mengonfigurasi durasi cache untuk pengendali file statis tertentu. Nilainya berupa string angka dan unit, yang dipisahkan dengan spasi, yang unitnya dapat berupa d untuk hari, h untuk jam, m untuk menit, dan s untuk detik. Misalnya, "4d 5h" menetapkan masa berlaku cache ke 4 hari dan 5 jam setelah file pertama kali diminta. Jika dihilangkan, server produksi akan menetapkan masa berlaku ke 10 menit.

Contoh Python 3:

runtime: python312

default_expiration: "4d 5h"

handlers:
# ...

Untuk informasi selengkapnya, lihat Masa berlaku cache.

entrypoint

Opsional. Mengabaikan perilaku proses mulai default dengan menjalankan perintah entrypoint saat aplikasi Anda dimulai. Agar aplikasi Anda dapat menerima permintaan HTTP, elemen entrypoint harus berisi perintah yang memulai server web yang memproses port 8080.

Jika entrypoint tidak ditetapkan untuk runtime Python 3, App Engine akan mengonfigurasi dan memulai server web Gunicorn.

Untuk informasi selengkapnya, lihat Proses mulai aplikasi.

env_variables

Opsional. Anda dapat menentukan variabel lingkungan di file app.yaml agar tersedia untuk aplikasi Anda. Pastikan kunci di variabel Lingkungan cocok dengan ekspresi '[a-zA-Z_][a-zA-Z0-9_]*' (dimulai dengan alfabet atau "_" yang diikuti dengan alfanumerik atau "_").

Variabel lingkungan yang diawali dengan GAE dicadangkan untuk penggunaan sistem dan tidak diizinkan di file app.yaml.

Untuk Python 3, variabel ini tersedia di kamus os.environ:


env_variables:
          DJANGO_SETTINGS_MODULE: "myapp.settings"

Lihat juga daftar variabel lingkungan runtime yang tidak dapat ditimpa.

error_handlers

Opsional. Digunakan untuk mengonfigurasi halaman error khusus yang ditampilkan untuk berbagai jenis error.

Elemen ini dapat berisi elemen berikut:

error_code
Opsional. error_code dapat berupa salah satu dari yang berikut:
over_quota
Menunjukkan aplikasi telah melampaui kuota resource
timeout
Ditayangkan jika batas waktu tercapai sebelum ada respons dari aplikasi Anda.

Error_code bersifat opsional; jika tidak ditentukan, file yang diberikan akan menjadi respons error default untuk aplikasi Anda.

file
Setiap entri file menunjukkan file statis yang harus ditampilkan sebagai pengganti respons error umum. Jika Anda menentukan elemen file tanpa elemen error_code yang sesuai, file statis tersebut akan menjadi halaman error default untuk aplikasi Anda. Data error khusus harus berukuran kurang dari 10 kilobyte.
Contoh

error_handlers:
  - file: default_error.html

  - error_code: over_quota
    file: over_quota.html
handlers

Opsional. Daftar pola URL dan deskripsi mengenai cara penanganannya. App Engine dapat menangani URL dengan mengeksekusi kode aplikasi, atau dengan menyajikan file statis yang diupload dengan kode, seperti image, CSS, atau JavaScript.

Lihat Pengendali dan sintaksis sub-elemen

inbound_services

Opsional. Aplikasi harus mengaktifkan layanan tersebut sebelum dapat menerima permintaan masuk. Anda dapat mengaktifkan layanan untuk aplikasi dengan menyertakan bagian inbound_services dalam file app.yaml.

warmup
Mengaktifkan warmup request. Lihat Mengonfigurasi Warmup Request.
Contoh:

inbound_services:
- warmup
instance_class

Opsional. Class instance untuk layanan ini.

Nilai berikut tersedia, bergantung pada penskalaan layanan Anda:

Penskalaan otomatis
F1, F2, F4, F4_1G
Default: F1

Anda dapat menggunakan elemen automatic_scaling untuk mengubah setelan default untuk penskalaan otomatis, seperti jumlah minimum dan maksimum instance, latensi, serta koneksi serentak.

Catatan: Jika instance_class ditetapkan ke F2 atau yang lebih tinggi, Anda dapat mengoptimalkan instance dengan menetapkan max_concurrent_requests ke nilai yang lebih tinggi dari nilai default 10. Untuk menentukan nilai optimal, tingkatkan secara bertahap dan pantau kinerja aplikasi Anda.

Penskalaan dasar dan manual
B1, B2, B4, B4_1G, B8
Default: B2

Class instance dasar dan manual mengharuskan Anda menentukan elemen basic_scaling atau elemen manual_scaling.

main

Opsional. Untuk Go 1.12+, jalur atau nama paket yang sepenuhnya memenuhi syarat dari paket utama. Setelan ini hanya berlaku jika aplikasi Anda menggunakan mode modul Go.

Anda harus mendeklarasikan jalur ke paket utama jika package main tidak berada dalam direktori yang sama dengan app.yaml. Elemen main mendukung jalur file yang relatif terhadap app.yaml atau nama paket lengkap. Misalnya, jika aplikasi Anda memiliki struktur direktori berikut:


myapp/
├── app.yaml
├── go.mod
├── cmd
│   └── web
│       └── main.go
└── pkg
    └── users
        └── users.go

Anda harus menggunakan:


main: ./cmd/web

atau


main: example.com/myapp/cmd/web
runtime

Wajib. Nama lingkungan runtime yang digunakan oleh aplikasi Anda. Misalnya, untuk menentukan lingkungan runtime, gunakan:


runtime: python312
service

Wajib jika membuat layanan. Opsional untuk layanan default. Setiap layanan dan setiap versi harus memiliki nama. Nama dapat berisi angka, huruf, dan tanda hubung. Panjang gabungan dari VERSION-dot-SERVICE-dot-PROJECT_ID, dengan VERSION sebagai nama versi Anda, SERVICE sebagai nama layanan, dan PROJECT_ID adalah ID project Anda, tidak boleh lebih dari 63 karakter dan tidak boleh diawali atau diakhiri dengan tanda hubung. Pilih nama unik untuk setiap layanan dan versi. Jangan gunakan ulang nama yang sudah digunakan untuk penamaan layanan dan versi.

Contoh:

service: service-name
service_account

Opsional. Elemen service_account memungkinkan Anda menentukan akun layanan khusus versi sebagai identitas untuk versi tersebut. Akun layanan yang ditentukan digunakan saat mengakses layanan Google Cloud lainnya dan menjalankan tugas.

Contoh:

service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com
vpc_access_connector

Opsional. Mengonfigurasi aplikasi Anda untuk menggunakan konektor Akses VPC Serverless, yang memungkinkan aplikasi mengirim permintaan ke resource internal dalam jaringan VPC Anda. Untuk informasi selengkapnya, lihat Menghubungkan ke jaringan VPC.

name
Literal string. Tentukan nama konektor Akses VPC Serverless yang sepenuhnya memenuhi syarat dalam tanda kutip:

"projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME"
egress_setting
Opsional. Default-nya adalah private-ranges-only. egress_setting dapat berupa salah satu dari yang berikut:
private-ranges-only
Default. Permintaan ke alamat IP internal dikirim melalui konektor Akses VPC Serverless ke jaringan VPC yang terhubung. Permintaan ke alamat IP eksternal dikirim ke internet publik.
all-traffic
Semua permintaan dikirim melalui konektor Akses VPC Serverless ke jaringan VPC yang terhubung.
Contoh

vpc_access_connector:
  name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME"
  egress_setting: all-traffic

Elemen pengendali

Elemen handlers menyediakan daftar pola URL dan deskripsi cara penanganannya. App Engine dapat menangani URL dengan mengeksekusi kode aplikasi, menyajikan file statis yang diupload dengan kode, seperti image, CSS, atau JavaScript.

Pola dievaluasi sesuai urutan kemunculannya dalam file app.yaml, dari atas ke bawah. Pemetaan pertama yang polanya cocok dengan URL adalah pemetaan yang digunakan untuk menangani permintaan.

Tabel berikut mencantumkan subelemen dari elemen handlers yang mengontrol perilaku untuk file statis, direktori statis, skrip di runtime selain Node.js, dan setelan lainnya.

Elemen Deskripsi
auth_fail_action

Untuk menggunakan elemen ini, app_engine_apis harus ditetapkan ke true.

Opsional. Menjelaskan tindakan yang diambil saat elemen login ditentukan untuk pengendali dan saat pengguna tidak login. Memiliki dua kemungkinan nilai:

redirect
Default. Pengguna dialihkan ke halaman login Google, atau /_ah/login_required jika autentikasi OpenID digunakan. Pengguna dialihkan kembali ke URL aplikasi setelah login atau membuat akun.
unauthorized
Permintaan ditolak dengan kode status HTTP 401 dan pesan error.

Jika aplikasi memerlukan perilaku yang berbeda, aplikasi itu sendiri dapat mengimplementasikan penanganan login pengguna. Misalnya, mewajibkan login untuk direktori /profile/ atau login administrator untuk direktori /admin/. Lihat API Pengguna untuk informasi selengkapnya.

Anda dapat mengonfigurasi pengendali untuk menolak akses ke URL yang dilindungi saat pengguna tidak login, bukan mengalihkan pengguna ke halaman login, dengan menambahkan auth_fail_action: unauthorized ke konfigurasi pengendali.

expiration Opsional. Durasi file statis yang ditayangkan oleh pengendali ini harus disimpan dalam cache oleh proxy web dan browser. Nilainya adalah string angka dan satuan, yang dipisahkan dengan spasi, dengan satuan dapat berupa d untuk hari, h untuk jam, m untuk menit, dan s untuk detik. Misalnya, "4d 5h" menetapkan masa berlaku cache menjadi 4 hari dan 5 jam setelah file pertama kali diminta. Jika dihilangkan, default_expiration aplikasi akan digunakan. Lihat Masa berlaku cache untuk detail selengkapnya.
http_headers

Opsional. Anda dapat menetapkan header HTTP untuk respons file statis atau pengendali direktori.

Jika perlu menetapkan header HTTP di pengendali script, Anda harus melakukannya di kode aplikasi. Untuk informasi tentang header respons yang memengaruhi penyimpanan ke cache, lihat Menyimpan data statis ke dalam cache.

Untuk informasi selengkapnya tentang header khusus App Engine, lihat Header dan respons permintaan.

Contoh

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    X-Foo-Header: foo
    X-Bar-Header: bar value
    vary: Accept-Encoding
  # ...

Dukungan CORS

Salah satu penggunaan penting fitur ini adalah untuk mendukung Cross-Origin Resource Sharing (CORS), seperti mengakses file yang dihosting oleh aplikasi App Engine lain.

Misalnya, Anda dapat memiliki aplikasi game mygame.uc.r.appspot.com yang mengakses aset yang dihosting oleh myassets.uc.r.appspot.com. Namun, jika mygame mencoba membuat JavaScript XMLHttpRequest menjadi myassets, proses tersebut tidak akan berhasil kecuali pengendali untuk myassets menampilkan header respons Access-Control-Allow-Origin: yang berisi nilai http://mygame.uc.r.appspot.com.

Berikut adalah cara membuat pengendali file statis menampilkan nilai header respons yang diperlukan:


handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com
  # ...

Tips: Agar semua orang dapat mengakses aset, Anda dapat menggunakan karakter pengganti '*', bukan https://mygame.uc.r.appspot.com.

login

Untuk menggunakan elemen ini, app_engine_apis harus ditetapkan ke true.

Opsional. Menentukan apakah pengendali URL mengharuskan pengguna untuk login.

Elemen ini memiliki tiga kemungkinan nilai:

optional
Default. Tidak mengharuskan pengguna untuk login.
required
Jika pengguna sudah login, pengendali akan melanjutkan proses secara normal. Jika belum, tindakan yang diberikan di auth_fail_action akan dilakukan.
admin
Seperti halnya required, menjalankan auth_fail_action jika pengguna tidak login. Selain itu, jika pengguna bukan administrator aplikasi, mereka akan diberikan pesan error, terlepas dari setelan yang berlaku auth_fail_action. Jika pengguna adalah administrator, pengendali akan melanjutkan.

Jika pengendali URL dengan setelan login selain optional cocok dengan URL, pengendali akan memeriksa terlebih dahulu apakah pengguna login ke aplikasi menggunakan opsi autentikasinya Jika tidak, secara default, pengguna akan dialihkan ke halaman login. Anda juga dapat menggunakan auth_fail_action untuk mengonfigurasi aplikasi agar hanya menolak permintaan pengendali dari pengguna yang tidak terautentikasi dengan benar, bukan mengalihkan pengguna ke halaman login.

Catatan: pembatasan login admin juga terpenuhi untuk permintaan internal yang mana App Engine menetapkan header khusus X-Appengine yang sesuai. Misalnya, tugas terjadwal cron memenuhi batasan admin karena App Engine menetapkan header HTTP X-Appengine-Cron: true pada masing-masing permintaan. Namun, permintaan tersebut tidak akan memenuhi pembatasan login required, karena tugas terjadwal cron tidak dijalankan sebagai pengguna mana pun.

mime_type

Opsional. Jika ditentukan, semua file yang dilayani oleh pengendali ini akan dilayani menggunakan jenis MIME yang ditetapkan. Jika tidak ditentukan, jenis MIME untuk file akan diambil dari ekstensi nama file. Jika file yang sama diupload dengan beberapa ekstensi, ekstensi yang dihasilkan dapat bergantung pada urutan upload yang terjadi.

Untuk informasi selengkapnya tentang kemungkinan jenis media MIME, lihat situs Jenis Media MIME IANA.

redirect_http_response_code

Opsional. redirect_http_response_code digunakan dengan setelan secure untuk menetapkan kode respons HTTP yang ditampilkan saat menjalankan pengalihan yang diperlukan oleh konfigurasi setelan secure. Elemen redirect_http_response_code memiliki kemungkinan nilai berikut:

301
Kode respons Dipindahkan Secara Permanen.
302
Kode respons Ditemukan.
303
Kode respons Lihat Lainnya.
307
Kode respons Pengalihan Sementara.

Saat permintaan pengguna dialihkan, kode status HTTP akan ditetapkan ke nilai parameter redirect_http_response_code. Jika parameter tidak ada, 302 akan ditampilkan.

script

Opsional. Menentukan bahwa permintaan ke pengendali tertentu harus menargetkan aplikasi Anda. Satu-satunya nilai yang diterima untuk elemen script adalah auto karena semua traffic disajikan menggunakan perintah titik entri. Untuk menggunakan pengendali statis, setidaknya salah satu pengendali Anda harus berisi baris script: auto atau tentukan elemen entrypoint agar berhasil di-deploy.

secure Opsional. Semua pengendali URL dapat menggunakan setelan secure, termasuk pengendali file statis. Elemen secure memiliki kemungkinan nilai berikut:
optional
Permintaan HTTP dan HTTPS dengan URL yang cocok dengan pengendali berhasil tanpa pengalihan. Aplikasi dapat memeriksa permintaan untuk menentukan protokol yang digunakan, dan memberikan respons yang sesuai. Ini adalah setelan default saat secure tidak disediakan untuk pengendali.
never
Permintaan untuk URL yang cocok dengan pengendali ini yang menggunakan HTTPS akan otomatis dialihkan ke URL HTTP yang setara. Jika permintaan HTTPS pengguna dialihkan menjadi permintaan HTTP, parameter kueri akan dihapus dari permintaan tersebut. Hal ini mencegah pengguna secara tidak sengaja mengirimkan data kueri melalui koneksi tidak aman yang ditujukan untuk koneksi yang aman.
always
Permintaan untuk URL yang cocok dengan pengendali ini yang tidak menggunakan HTTPS akan otomatis dialihkan ke URL HTTPS dengan jalur yang sama. Parameter kueri dipertahankan untuk pengalihan.
Contoh Python 3

handlers:
- url: /youraccount/.*
  secure: always
  script: auto

Untuk menargetkan versi tertentu dari aplikasi Anda menggunakan domain REGION_ID.r.appspot.com, ganti titik yang biasanya akan memisahkan komponen subdomain URL dengan string "-dot-", misalnya:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

Untuk menggunakan domain kustom dengan HTTPS, Anda harus terlebih dahulu mengaktifkan dan mengonfigurasi sertifikat SSL untuk domain tersebut.

Login dan logout Akun Google selalu dilakukan menggunakan koneksi yang aman, yang tidak terkait dengan cara URL aplikasi dikonfigurasi.

static_dir

Opsional. Jalur ke direktori yang berisi file statis, dari direktori utama aplikasi. Semua elemen setelah akhir pola url yang cocok akan ditambahkan ke static_dir untuk membentuk jalur lengkap ke file yang diminta.

Setiap file dalam direktori statis disajikan menggunakan jenis MIME yang sesuai dengan ekstensi nama filenya kecuali jika diganti oleh setelan mime_type direktori. Semua file dalam direktori yang ditentukan diupload sebagai file statis, dan tidak ada yang dapat dijalankan sebagai skrip.

Contoh:

handlers:
# All URLs beginning with /stylesheets are treated as paths to
# static files in the stylesheets/ directory.
- url: /stylesheets
  static_dir: stylesheets
  # ...
static_files

Opsional. Pengendali pola file statis mengaitkan pola URL dengan jalur ke file statis yang diupload dengan aplikasi. Ekspresi reguler pola URL dapat menentukan pengelompokan ekspresi reguler yang akan digunakan dalam konstruksi jalur file. Anda dapat menggunakan ini sebagai pengganti static_dir untuk memetakan ke file tertentu dalam struktur direktori tanpa perlu memetakan seluruh direktori.

Contoh:

handlers:
# All URLs ending in .gif .png or .jpg are treated as paths to
# static files in the static/ directory. The URL pattern is a
# regular expression, with a grouping that is inserted into the
# path to the file.
- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$
  # ...

File statis tidak boleh sama dengan file kode aplikasi.

upload

Opsional. Ekspresi reguler yang cocok dengan jalur file untuk semua file yang akan direferensikan oleh pengendali ini. Hal ini diperlukan karena pengendali tidak dapat menentukan file mana yang ada dalam direktori aplikasi Anda yang sesuai dengan pola url dan static_files yang diberikan. File statis diupload dan ditangani secara terpisah dari file aplikasi. Contoh di atas mungkin menggunakan pola upload berikut: archives/(.*)/items/(.*)

url

Elemen yang wajib di bawah handlers. Pola URL, sebagai ekspresi reguler yang dapat berisi pengelompokan. Misalnya, /profile/(.*)/(.*) akan cocok dengan URL /profile/edit/manager serta menggunakan edit dan manager sebagai pengelompokan pertama dan kedua.

Pola URL memiliki beberapa perbedaan perilaku saat digunakan dengan elemen-elemen berikut:

static_dir
Menggunakan awalan URL. Pola ekspresi reguler tidak boleh berisi pengelompokan saat digunakan dengan elemen static_dir. Semua URL yang dimulai dengan awalan ini ditangani oleh pengendali ini, menggunakan bagian URL setelah awalan sebagai bagian dari jalur file.
static_files
Pengendali pola file statis mengaitkan pola URL dengan jalur ke file statis yang diupload dengan aplikasi. Ekspresi reguler pola URL dapat menentukan pengelompokan ekspresi reguler yang akan digunakan dalam konstruksi jalur file. Anda dapat menggunakan ini daripada static_dir untuk memetakan ke file tertentu dalam struktur direktori tanpa perlu memetakan seluruh direktori.

Menskalakan elemen

Elemen-elemen dalam tabel berikut mengonfigurasi cara aplikasi diskalakan. Jika tidak ada jenis penskalaan yang ditentukan, penskalaan otomatis akan disetel secara default.

Untuk mempelajari lebih lanjut cara aplikasi App Engine melakukan penskalaan, lihat Jenis penskalaan.

Elemen Deskripsi
automatic_scaling

Opsional. Hanya berlaku untuk aplikasi yang menggunakan class instance F1 atau yang lebih tinggi.

Tentukan elemen ini untuk mengubah setelan default penskalaan otomatis, seperti menetapkan tingkat minimum dan maksimum untuk jumlah instance, latensi, dan koneksi serentak untuk suatu layanan.

Elemen ini dapat berisi elemen-elemen berikut:

max_instances
Opsional. Tetapkan nilai antara 0 dan 2147483647, dengan nol akan menonaktifkan setelan

Parameter ini menentukan jumlah maksimum instance yang akan dibuat oleh App Engine untuk versi modul ini. Hal ini berguna untuk membatasi biaya modul.

min_instances
Opsional. Jumlah minimum instance yang akan dibuat oleh App Engine untuk versi modul ini. Instance ini menyalurkan traffic saat permintaan tiba, dan akan terus menyalurkan traffic bahkan ketika instance tambahan dimulai sesuai kebutuhan untuk menangani traffic.

Tentukan nilai dari 0 hingga 1.000. Anda dapat menetapkan parameter ke nilai 0 untuk memungkinkan penskalaan ke 0 instance guna menurunkan biaya jika tidak ada permintaan yang ditayangkan. Perlu diperhatikan bahwa Anda akan dikenai biaya untuk jumlah instance yang ditentukan, terlepas dari apakah instance tersebut menerima traffic atau tidak.

max_idle_instances

Opsional. Jumlah maksimum instance tanpa aktivitas yang harus dikelola App Engine untuk versi ini. Tentukan nilai dari 1 hingga 1000. Jika tidak ditentukan, nilai defaultnya adalah automatic, yang berarti App Engine akan mengelola jumlah instance yang tidak ada aktivitas.

Perhatikan hal-hal berikut:

  • Batas maksimum yang tinggi mengurangi jumlah instance yang tanpa aktivitas secara lebih bertahap saat tingkat beban kembali normal setelah terjadi lonjakan. Hal ini membantu aplikasi Anda mempertahankan performa yang stabil melalui fluktuasi beban permintaan, tetapi juga meningkatkan jumlah instance yang tanpa aktivitas (dan akibatnya, peningkatan biaya pengoperasian) selama periode dengan beban berat tersebut.
  • Batas maksimum yang rendah membuat biaya tetap rendah, tetapi dapat menurunkan performa saat tingkat beban yang berubah secara tiba-tiba.

Catatan: Saat kembali ke tingkat normal setelah lonjakan beban, jumlah instance tanpa aktivitas untuk sementara dapat melebihi batas maksimum yang Anda tentukan. Namun, Anda tidak akan ditagih untuk jumlah instance yang melebihi jumlah maksimum yang Anda tentukan.

min_idle_instances

Opsional: Jumlah instance tambahan yang akan tetap berjalan dan siap menyalurkan traffic untuk versi ini.

App Engine menghitung jumlah instance yang diperlukan untuk menyalurkan traffic aplikasi Anda saat ini berdasarkan setelan penskalaan seperti target_cpu_utilization dan target_throughput_utilization. Menetapkan min_idle_instances akan menentukan jumlah instance yang akan dijalankan selain jumlah yang dihitung ini. Misalnya, jika App Engine menghitung bahwa 5 instance diperlukan untuk menyalurkan traffic, dan min_idle_instances ditetapkan ke 2, App Engine akan menjalankan 7 instance (5, dihitung berdasarkan traffic, plus 2 tambahan per min_idle_instances).

Perlu diperhatikan bahwa Anda akan dikenai biaya untuk jumlah instance yang ditentukan, terlepas dari apakah instance tersebut menerima traffic atau tidak. Perhatikan hal-hal berikut:

  • Nilai minimum yang rendah membantu menjaga biaya operasional Anda tetap rendah selama periode tidak ada aktivitas, tetapi berarti jumlah instance yang tersedia mungkin lebih sedikit untuk merespons lonjakan beban tiba-tiba.
  • Nilai minimum yang tinggi memungkinkan Anda mempersiapkan aplikasi untuk lonjakan cepat dalam beban permintaan. App Engine mempertahankan jumlah minimum instance yang berjalan untuk melayani permintaan masuk. Anda akan dikenai biaya untuk jumlah instance yang ditentukan, terlepas dari apakah instance tersebut menangani permintaan atau tidak.

    Jika Anda menetapkan jumlah minimum instance saat tidak ada aktivitas, latensi tertunda tidak akan terlalu berpengaruh pada performa aplikasi Anda.

target_cpu_utilization
Opsional. Tentukan nilai antara 0,5 dan 0,95. Defaultnya adalah 0.6.

Parameter ini menetapkan batas penggunaan CPU saat instance baru akan dimulai untuk menangani traffic, sehingga Anda dapat menyeimbangkan antara performa dan biaya, yang mana nilai yang lebih rendah akan meningkatkan performa dan menambah biaya, serta nilai yang lebih tinggi mengurangi performa tetapi juga menurunkan biaya. Misalnya, nilai 0,7 artinya instance baru akan dimulai setelah penggunaan CPU mencapai 70 persen.

target_throughput_utilization
Opsional. Tentukan nilai dari 0,5 hingga 0,95. Defaultnya adalah 0.6.

Digunakan dengan max_concurrent_requests untuk menentukan kapan instance baru dimulai karena ada permintaan yang serentak. Jika jumlah permintaan serentak mencapai nilai yang sama dengan max_concurrent_requests kali target_throughput_utilization, scheduler akan mencoba memulai instance baru.

max_concurrent_requests

Opsional. Jumlah permintaan serentak yang dapat diterima instance penskalaan otomatis sebelum penjadwal memunculkan instance baru (Default: 10, Maksimum: 1000).

Digunakan dengan target_throughput_utilization untuk menentukan kapan instance baru dimulai karena permintaan serentak. Jika jumlah permintaan yang serentak mencapai nilai yang sama dengan max_concurrent_requests yang dikali dengan target_throughput_utilization, scheduler akan mencoba memulai instance baru.

Sebaiknya Anda tidak menetapkan max_concurrent_requests kurang dari 10 kecuali jika Anda memerlukan thread tunggal. Nilai kurang dari 10 cenderung menghasilkan lebih banyak instance yang dibuat daripada yang dibutuhkan untuk aplikasi threadsafe, dan dapat menimbulkan biaya yang tidak perlu.

Jika setelan ini terlalu tinggi, Anda mungkin mengalami peningkatan latensi API. Perhatikan bahwa scheduler mungkin memunculkan instance baru sebelum jumlah maksimum permintaan yang sebenarnya tercapai.

max_pending_latency

Durasi maksimum App Engine harus mengizinkan permintaan untuk menunggu dalam antrean yang tertunda sebelum memulai instance tambahan untuk menangani permintaan agar latensi tertunda berkurang. Saat batas ini tercapai, ini merupakan sinyal untuk meningkatkan skala, dan menghasilkan peningkatan jumlah instance.

Jika tidak ditentukan, nilai defaultnya adalah automatic. Artinya, permintaan dapat tetap berada dalam antrean tertunda selama 10 detik, yaitu batas waktu permintaan tertunda maksimum, sebelum pemulaian instance yang baru dipicu.

Nilai maksimum yang rendah berarti App Engine akan memulai instance baru lebih cepat untuk permintaan yang tertunda, sehingga meningkatkan performa tetapi menaikkan biaya operasional.

Nilai maksimum yang tinggi berarti pengguna mungkin menunggu lebih lama hingga permintaan mereka ditayangkan (jika ada permintaan yang tertunda dan tidak ada instance tanpa aktivitas untuk menayangkannya), tetapi biaya untuk menjalankan aplikasi Anda akan lebih murah.

min_pending_latency

Elemen opsional yang dapat Anda tetapkan untuk menentukan jumlah waktu minimum App Engine mengizinkan permintaan untuk menunggu dalam antrean yang tertunda sebelum memulai instance baru untuk menanganinya. Menentukan nilai ini dapat menurunkan biaya operasional, tetapi meningkatkan waktu yang dibutuhkan pengguna untuk menunggu permintaan mereka dilayani.

Untuk aplikasi gratis, nilai defaultnya adalah 500ms. Untuk aplikasi berbayar, nilai defaultnya adalah 0.

Elemen ini bekerja sama dengan elemen max_pending_latency untuk menentukan kapan App Engine membuat instance baru. Jika permintaan yang tertunda berada dalam antrean:

  • Kurang dari min_pending_latency yang Anda tetapkan, App Engine tidak akan membuat instance baru.
  • Lebih dari max_pending_latency, App Engine akan mencoba membuat instance baru.
  • Di antara waktu yang ditentukan oleh min_pending_latency dan max_pending_latency, App Engine akan mencoba menggunakan kembali instance yang ada. Jika tidak ada instance yang dapat memproses permintaan sebelum max_pending_latency, App Engine akan membuat instance baru.
Contoh

automatic_scaling:
  target_cpu_utilization: 0.65
  min_instances: 5
  max_instances: 100
  min_pending_latency: 30ms
  max_pending_latency: automatic
  max_concurrent_requests: 50
basic_scaling

Aplikasi yang menggunakan class instance B1 atau yang lebih tinggi harus menentukan elemen ini atau dengan manual_scaling.

Elemen ini memungkinkan penskalaan dasar class instance B1 dan yang lebih tinggi, yang dapat berisi elemen-elemen berikut:

max_instances
Diperlukan. Jumlah instance maksimum yang akan dibuat oleh App Engine untuk versi layanan ini. Hal ini berguna untuk membatasi biaya layanan.
idle_timeout
Opsional. Instance akan dihentikan selama jangka waktu ini setelah menerima permintaan terakhir. Defaultnya adalah 5 menit (5m).
Contoh

basic_scaling:
  max_instances: 11
  idle_timeout: 10m
manual_scaling

Aplikasi yang menggunakan class instance B1 atau yang lebih tinggi harus menentukan elemen ini atau basic_scaling.

Elemen ini memungkinkan penskalaan manual class instance B1 dan yang lebih tinggi, serta dapat berisi elemen berikut:

instances
Jumlah instance yang akan ditetapkan ke layanan di awal.
Contoh

manual_scaling:
  instances: 5