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 mengkonfigurasi setelan aplikasi App Engine di file app.yaml. File ini menentukan korespondensi jalur URL dengan pengendali permintaan dan file statis. File app.yaml juga berisi informasi tentang kode aplikasi Anda, seperti runtime dan ID versi terbaru.

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.

Struktur direktori

Untuk mempelajari lebih lanjut tentang membuat struktur beberapa layanan di aplikasi Anda, lihat Penyusunan Layanan Web di App Engine.

Contoh

Berikut adalah contoh dari file app.yaml untuk aplikasi Python 2:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Perintah script: dapat berisi jalur akhirfile dalam .py, yang berarti skrip tersebut menggunakan CGI, atau jalur modul Python, dengan nama paket yang dipisahkan dengan titik, yang berarti skrip menggunakan WSGI.

Sintaksis

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.

Elemen aplikasi dan runtime

Elemen Deskripsi
application

Pendekatan yang direkomendasikan adalah menghapus elemen application dari file app.yaml Anda dan sebaliknya, gunakan tanda command-line untuk menentukan ID aplikasi Anda:

  • Untuk menggunakan perintah gcloud app deploy, Anda harus menentukan flag --project:
    
    gcloud app deploy --project [YOUR_PROJECT_ID]

Untuk mengetahui informasi selengkapnya tentang penggunaan perintah ini, lihat Men-deploy Aplikasi Anda.

ID aplikasi adalah project ID konsol Google Cloud yang Anda tentukan ketika Anda ketika Anda membuat aplikasi di konsol Google Cloud.

api_version

Wajib. Versi API di lingkungan runtime tertentu yang digunakan oleh aplikasi Anda.

Kolom ini tidak digunakan lagi pada runtime App Engine yang baru.

Saat Google mengumumkan dukungan untuk versi baru API lingkungan runtime, aplikasi yang Anda deploy akan terus menggunakan versi yang telah ditentukan. Untuk mengupgrade aplikasi ke versi baru API, ubah nilai ini, kemudian deploy ulang aplikasi ke App Engine. Saat Anda menentukan nilai 1, lingkungan runtime terbaru yang didukung digunakan setiap kali Anda men-deploy aplikasi tersebut (saat ini ).

Saat ini, App Engine memiliki satu versi dari lingkungan runtime python27: 1

auto_id_policy Opsional. Jika Anda menetapkan ID entity secara otomatis, Anda dapat mengubah metode yang digunakan dengan menetapkan kebijakan ID otomatis. Berikut ini adalah opsi yang valid:
default
Default. Menggunakan ID otomatis yang tersebar, yang merupakan bilangan bulat yang didistribusikan dengan baik, dan cukup kecil untuk ditampilkan oleh float 64-bit.
legacy
Opsi lama tidak akan digunakan lagi dalam rilis mendatang dan akan dihapus. Untuk mengetahui informasi lebih lanjut, lihat postingan blog yang mengumumkan perubahan ini.
builtins

Opsional. Python 2 SDK menyertakan sejumlah pengendali bawaan untuk fungsi aplikasi umum. Perintah builtins memungkinkan Anda menyertakan pengendali tertentu di app.yaml.

Kolom ini tidak digunakan lagi di runtime Python 3.

Pengendali bawaan berikut tersedia untuk digunakan:

appstats
Mengaktifkan Appstats di /_ah/stats/, yang dapat Anda gunakan untuk mengukur performa aplikasi Anda. Untuk menggunakan Appstats, Anda juga harus menginstal perekam peristiwa.
deferred
Mengaktifkan pengendali yang ditangguhkan di /_ah/queue/deferred. Bawaan ini memungkinkan developer menggunakan deferred.defer() untuk menyederhanakan pembuatan tugas Task Queue.
remote_api
Mengaktifkan bawaan remote_api di /_ah/remote_api/. Fitur bawaan ini memungkinkan aplikasi jarak jauh dengan kredensial yang tepat untuk mengakses datastore dari jarak jauh.
Contoh:

builtins:
- deferred: on
- appstats: on

Perintah builtins adalah instance khusus dari perintah includes. Setiap perintah builtin setara, di Python, dengan perintah includes dengan jalur yang diperluas. Contoh:


builtins:
- name: on

Setara dengan:


includes:
- $PYTHON_LIB/google/appengine/ext/builtins/name/

Jika Anda menggunakan builtins dalam file app.yaml, setiap pengendali yang ditetapkan dalam file include.yaml bawaan akan menggantikan pengendali apa pun yang Anda tetapkan dalam file app.yaml. Namun, jika Anda menyertakan file yang kemudian menggunakan builtins atau includes, pengendali akan ditambahkan sesuai urutan hierarki penyertaan. Dengan kata lain, pengendali "induk" yang disertakan ditambahkan sebelum bawaan "turunan" disertakan, dan seterusnya.

Misalnya, pertimbangkan app.yaml berikut, yang menggunakan pengendali appstats bawaan:


handlers:
- url: /.*
  script: main.app
builtins:
- appstats: on

Daftar pengendali yang dihasilkan adalah:


[/_ah/stats, /.*]

Jika app.yaml menggunakan perintah includes:


includes:
- included.yaml

Lalu file included.yaml menggunakan builtins:


handlers:
- url: /.*
  script: main.app
builtins:
- appstats: on

Daftar pengendali yang dihasilkan sekarang adalah:


[/.*, /_ah/stats]

Urutan penempatan klausa builtins dalam file .yaml tidak mengubah perilaku.

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:

runtime: python27
api_version: 1
threadsafe: true

default_expiration: "4d 5h"

handlers:
# ...

Untuk informasi selengkapnya, lihat Masa berlaku cache.

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.

Variabel ini akan tersedia dalam kamus os.environ:

env_variables:
  DJANGO_SETTINGS_MODULE: "myapp.settings"
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

Wajib. 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 sintaksis Pengendali dan sub-elemen

includes

Opsional. Perintah includes memungkinkan Anda menyertakan file konfigurasi untuk library atau layanan apa pun di seluruh aplikasi Anda. Misalnya, Anda dapat menyertakan library administrasi pengguna seperti berikut:


includes:
- lib/user_admin.yaml

App Engine menyelesaikan jalur yang disertakan dalam urutan berikut:

  • Jalur absolut atau relatif ke direktori kerja. Jalur yang ditentukan akan me-resolve ke file.
  • Relatif terhadap direktori aplikasi, yang juga dikenal sebagai basepath. Basepath dan jalur di-resolve ke sebuah file.
  • Relatif terhadap file yang menyertakan file saat ini. Lokasi file referensi dan jalur penyertaan di-resolve ke file yang disertakan.

Jika perintah include menentukan direktori, App Engine akan mencari file bernama include.yaml di direktori tersebut. Jika perintah include adalah sebuah file, file khusus tersebut akan disertakan. Penggunaan includes hanya akan mengambil jenis perintah berikut dari file tujuan (jika ada):

Pola skip_files yang disertakan akan ditambahkan ke pola yang ada dalam app.yaml, atau ke daftar default jika tidak ada daftar eksplisit di app.yaml. Perhatikan bahwa skip_files membandingkan jalur absolut.

inbound_services

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

Layanan masuk berikut tersedia:

mail
Mengizinkan aplikasi Anda menerima email.
warmup
Mengaktifkan warmup request. Lihat Mengonfigurasi Warmup Request.
Contoh:

inbound_services:
  - mail
  - 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.

libraries

Opsional. Runtime Python 2.7 menyertakan beberapa library pihak ketiga. Beberapa di antaranya tersedia secara default; yang lain hanya tersedia jika dikonfigurasi. Anda dapat menentukan versi mana yang ingin digunakan dengan menentukan nilai name dan version.

Kolom ini tidak digunakan lagi di runtime Python 3.


libraries:
- name: PIL
  version: "1.1.7"
- name: webob
  version: "latest"
        

Perhatikan bahwa saat Anda menentukan latest, SDK akan menentukan versi library terbaru pada waktu deployment. Setelah di-deploy, versi library tidak akan berubah. Satu-satunya cara untuk mendapatkan versi library yang berbeda adalah dengan men-deploy kembali.

Jika mengembangkan aplikasi yang belum memiliki pengguna: Anda tidak perlu melacak versi baru. Namun, jika aplikasi Anda digunakan secara aktif, berhati-hatilah: Anda mungkin akan terkejut karena aplikasi Anda mulai menggunakan versi library baru yang tidak kompatibel dengan versi sebelumnya.

Untuk daftar library pihak ketiga yang disertakan, lihat Library Pihak Ketiga. Anda dapat menggunakan library pihak ketiga python murni tambahan dengan menginstalnya ke direktori lokal.

Jika Anda menggunakan lingkungan fleksibel, lihat Menggunakan library Python di lingkungan fleksibel.

module

Catatan: Modul kini diberi nama Layanan.

Untuk mengelola aplikasi dengan gcloud CLI, gunakan elemen layanan.

runtime

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


runtime: python27
service

Layanan sebelumnya dikenal sebagai Modul.

Hanya didukung oleh plugin berbasis gcloud CLI atau gcloud CLI, misalnya: gcloud app deploy .

Diperlukan 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

Catatan: Perintah gcloud app deploy kompatibel dengan versi lama dan mendukung file app.yaml yang ada yang mencakup layanan yang disebut sebagai modul, contohnya:


module: service-name
service_account

Opsional. Elemen service_account memungkinkan Anda menentukan akun layanan yang dikelola pengguna 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
skip_files

Opsional. Elemen skip_files menentukan file mana dalam direktori aplikasi yang tidak akan diupload ke App Engine. Nilainya dapat berupa ekspresi reguler, atau daftar ekspresi reguler. Semua nama file yang cocok dengan ekspresi reguler akan dihilangkan dari daftar file yang akan diupload saat aplikasi diupload. Nama file bersifat relatif terhadap direktori project.

skip_files memiliki default berikut:


skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$

Pola default mengecualikan file cadangan Emacs dengan nama formulir #...# dan ...~, file .pyc dan .pyo, file dalam direktori kontrol revisi RCS, dan file tersembunyi Unix dengan nama yang diawali dengan titik (.).

Untuk memperluas daftar ekspresi reguler di atas, salin dan tempel daftar di atas ke dalam app.yaml Anda dan tambahkan ekspresi reguler Anda sendiri. Misalnya, untuk melewati file yang namanya diakhiri dengan .bak dikarenakan pola defaultnya, tambahkan entri seperti ini untuk skip_files:


skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$
- ^(.*/)?.*\.bak$

Untuk melewati direktori lengkap, tambahkan nama direktori ke daftar. Misalnya, untuk melewati direktori bernama logs, tambahkan baris berikut ke direktori yang dijelaskan sebelumnya:


skip_files:
- logs/
threadsafe

Wajib. Mengonfigurasi aplikasi Anda untuk menggunakan permintaan serentak. Jika menggunakan library thread Python, data lokal thread, seperti yang ditampilkan oleh threading.local(), akan dihapus setelah setiap permintaan.

Kolom ini tidak digunakan lagi di runtime Python 3.


threadsafe: [true | false]

Catatan: Perintah threadsafe diwajibkan untuk aplikasi Python 2.7. threadsafe: true mengharuskan semua pengendali skrip berupa pengendali WSGI. Artinya, setiap skrip harus ditentukan dalam perintah script: menggunakan jalur modul Python, dengan nama paket yang dipisahkan dengan titik. Komponen terakhir dari perintah script: yang menggunakan jalur modul Python adalah nama variabel global dalam service: variabel tersebut harus berupa aplikasi WSGI, dan biasanya disebut app berdasarkan konvensi.

version

Pendekatan yang direkomendasikan adalah menghapus elemen version dari file app.yaml Anda dan sebagai gantinya, gunakan tanda command line untuk menentukan ID versi:

  • Untuk menggunakan perintah gcloud app deploy, tentukan tanda -v:
    
    gcloud app deploy -v [YOUR_VERSION_ID]

Untuk mengetahui informasi selengkapnya tentang penggunaan perintah ini, lihat Men-deploy Aplikasi Anda.

ID untuk versi kode aplikasi yang Anda deploy ke App Engine.

ID versi dapat berisi huruf kecil, angka, dan tanda hubung. ID versi ini tidak boleh diawali dengan awalan ah-, dan nama default dan latest sudah dicadangkan dan tidak dapat digunakan.

Catatan: Nama versi harus dimulai dengan huruf untuk membedakannya dari instance numerik yang selalu ditentukan dengan angka. Hal ini menghindari ambiguitas dengan URL seperti 123-dot-my-service.uc.r.appspot.com, yang dapat ditafsirkan dua cara: Jika versi "123" ada, targetnya adalah versi "123" dari layanan yang diberikan. Jika versi tersebut tidak ada, targetnya adalah nomor instance 123 dari versi default layanan.

Setiap versi aplikasi menyimpan salinan app.yaml-nya sendiri. Saat aplikasi diupload, versi yang disebutkan dalam file app.yaml yang diupload adalah versi yang akan dibuat atau diganti oleh upload tersebut. Administrator dapat mengubah versi aplikasi yang menyajikan traffic menggunakan konsol Google Cloud, dan juga dapat menguji versi lain sebelum mengonfigurasinya untuk menerima traffic.

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 mengetahui informasi selengkapnya, lihat Menghubungkan ke jaringan VPC.

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

"projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME"
egress_setting
Opsional. Nilai defaultnya adalah private-ranges-only. egress_setting dapat berupa salah satu dari 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 dalam 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 adalah elemen yang diperlukan dalam file konfigurasi app.yaml. Elemen ini 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 skrip, file statis, direktori statis, dan setelan lainnya.

Elemen Deskripsi
application_readable Opsional. Boolean. Secara default, file yang disebutkan dalam pengendali file statis diupload sebagai data statis dan hanya ditayangkan kepada pengguna akhir. File tersebut tidak dapat dibaca oleh aplikasi. Jika kolom ini diatur ke true, file juga akan diupload sebagai data kode sehingga aplikasi Anda dapat membacanya. Kedua upload dikenai biaya berdasarkan kode dan kuota resource penyimpanan data statis.

Kolom ini tidak digunakan lagi pada runtime App Engine yang baru.

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 dalam pengendali script, Anda harus melakukannya di kode aplikasi. Untuk mengetahui informasi tentang header respons mana yang memengaruhi penyimpanan dalam cache, lihat Menyimpan data statis dalam cache.

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
  # ...

Catatan: jika ingin mengizinkan semua orang mengakses aset, Anda dapat menggunakan karakter pengganti '*', bukan https://mygame.uc.r.appspot.com.

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.

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

handlers:
- url: /youraccount/.*
  script: accounts.app
  login: required
  secure: always
  redirect_http_response_code: 301

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 jalur skrip dari direktori utama aplikasi:


handlers:
# The root URL (/) is handled by the WSGI application named
# "app" in home.py. No other URLs match this pattern.
- url: /
  script: home.app

# The URL /index.html is also handled by the home.py script.
- url: /index\.html
  script: home.app

# A regular expression can map parts of the URL to the
# path of the script.
- url: /browse/(books|videos|tools)
  script: \1.catalog.app

# All other URLs use the WSGI application named in "app"
# in not_found.py.
- url: /.*
  script: not_found.app

Perintah script: harus berupa jalur impor python, misalnya, package.module.app yang mengarah ke aplikasi WSGI. Komponen terakhir dari perintah script: yang menggunakan jalur Modul Python adalah nama variabel global dalam modul: variabel tersebut harus berupa aplikasi WSGI, dan biasanya disebut app berdasarkan konvensi.

Catatan: seperti halnya pernyataan import Python, setiap subdirektori yang merupakan paket harus berisi file bernama __init__.py.

Dalam runtime App Engine yang lebih baru, perilaku kolom ini telah berubah.

secure Opsional. Semua pengendali URL dapat menggunakan setelan secure, termasuk pengendali skrip dan 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

handlers:
- url: /youraccount/.*
  script: accounts.app
  login: required
  secure: always

Server web pengembangan tidak mendukung koneksi HTTPS. Metode ini mengabaikan parameter secure sehingga jalur yang ditujukan untuk digunakan dengan HTTPS dapat diuji menggunakan koneksi HTTP reguler ke server web pengembangan.

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.

Semua file dalam direktori ini diupload dengan aplikasi Anda sebagai file statis. App Engine menyimpan dan menayangkan file statis secara terpisah dari file aplikasi Anda. File statis tidak tersedia di sistem file aplikasi secara default. Ini dapat diubah dengan menetapkan opsi application_readable menjadi true.

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)$
  # ...

App Engine menyimpan dan menayangkan file statis secara terpisah dari file aplikasi. File statis tidak tersedia di sistem file aplikasi secara default. Ini dapat diubah dengan menetapkan opsi application_readable ke true.

File statis tidak boleh sama dengan file kode aplikasi. Jika jalur file statis cocok dengan jalur ke skrip yang digunakan dalam pengendali dinamis, skrip tidak akan tersedia untuk pengendali dinamis.

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. Ekspresi dapat berisi pengelompokan yang dapat dirujuk di jalur file ke skrip dengan referensi balik ekspresi reguler. 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 penskalaan aplikasi. 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 penskalaan instance otomatis sebelum scheduler memunculkan instance baru (Default: 10, Maksimum: 1000).

Digunakan dengan target_throughput_utilization untuk menentukan kapan instance baru dimulai karena permintaan yang 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