App Engine app.yaml 參考資料

區域 ID

REGION_ID 是 Google 根據您在建立應用程式時選取的區域指派的縮寫代碼。這個代碼不對應國家/地區或省/市,即使某些區域 ID 可能與常用的國家/地區和省/市代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是 2020 年 2 月前建立的現有應用程式,網址中的區域 ID 則為選用。

進一步瞭解區域 ID。

您可以在 app.yaml 設定檔中進行 App Engine 應用程式的設定。設定檔必須至少指定一個 runtime 項目。

應用程式中的每個服務都有自己的 app.yaml 檔案,做為該服務的部署作業描述元。您必須先為 default 服務建立 app.yaml 檔案,才能為應用程式中的額外服務建立及部署 app.yaml 檔案。如要進一步瞭解如何在應用程式中建構多項服務,請參閱「在 App Engine 中建構網路服務」。

語法

app.yaml 的語法採用 YAML 格式。

YAML 格式支援註解功能,因此系統會忽略以井字 (#) 字元開頭的行:

# This is a comment.

網址和檔案路徑模式會使用 POSIX 擴充規則運算式語法,但不包括對照元素和對照類別。系統支援對分組相符項目 (例如 \1) 的反向參照,也支援下列擴充項目:\w \W \s \S \d \D。

範例

app.yaml 檔案的範例如下:

runtime: python315

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

下表提供 app.yaml 檔案中可用欄位的 YAML 範例:

執行階段和應用程式元素

元素 說明
app_engine_apis

選用。將這個欄位設為 true,即可啟用第二代執行階段的所有隨附服務。如果將這個欄位設為 true 或 false,則只有在未指定 app_engine_bundled_services 設定時,部署作業才會成功。

建議您使用 app_engine_bundled_services 指定應用程式所需的隨附服務。這種做法可提供精細控管,並盡可能減少不必要的服務,進而提升安全性。此外,這項做法可確保應用程式收到實際使用服務的重要更新,方便維護。

app_engine_bundled_services

選用。設定這個欄位,即可為第二代執行階段啟用特定隨附服務的存取權。如果將 app_engine_apis 欄位設為 true,就無法使用這項設定。

使用這項設定指定下列任一支援的隨附服務:

  • 應用程式身分:app_identity_service
  • Blobstore:blobstore
  • 功能:capability_service
  • Datastore:datastore_v3
  • 圖片數:images
  • 命名空間:namespaces
  • 搜尋:search
  • 延後:deferred
  • 郵件:mail
  • Memcache:memcache
  • 模組:modules
  • 工作佇列:taskqueue
  • 網址擷取:urlfetch
  • 使用者:user

範例:

app_engine_bundled_services:
- user
- memcache

這個範例可讓應用程式僅使用 Datastore 和 Memcache 隨附服務。

build_env_variables

選用。如果使用的執行階段支援 buildpack,您可以在 app.yaml 檔案中定義建構環境變數。

詳情請參閱「使用建構環境變數」。

default_expiration

選用。會針對應用程式的所有靜態檔案處理常式,設定全域的預設快取有效期限。您也可以設定特定靜態檔案處理常式的快取效期。這個值是由數字和單位 (以空格分隔) 組成的字串,其中單位可為 d (天數)、h (小時數)、m (分鐘數) 和 s (秒數)。舉例來說,"4d 5h" 會將快取有效期限設定為檔案首次收到要求後的 4 天又 5 小時。如果您省略這個值,實際工作環境伺服器會把有效期限設定為 10 分鐘。

Python 範例:
runtime: python315

default_expiration: "4d 5h"

handlers:
# ...

詳情請參閱「快取到期時間」。

entrypoint

選用。在應用程式啟動時執行 entrypoint 指令,覆寫預設啟動行為。如要讓應用程式接收 HTTP 要求,entrypoint 元素應包含啟動網路伺服器的指令,該伺服器會監聽通訊埠 8080。

如未指定 Python 執行階段的 entrypoint,App Engine 會設定並啟動 Gunicorn 網路伺服器。

詳情請參閱「應用程式啟動」。

env_variables

選用元素。您可以在 app.yaml 檔案中定義環境變數,讓應用程式使用這些變數。請確認環境變數中的鍵符合運算式「[a-zA-Z_][a-zA-Z0-9_]*」(開頭為英文字母或「_」,後面接著任何英數字元或「_」)。

開頭為 GAE 的環境變數已保留給系統使用,無法用於 app.yaml 檔案中。

如果是 Python,這些變數可在 os.environ 字典中使用:

env_variables:
          DJANGO_SETTINGS_MODULE: "myapp.settings"

另請參閱無法覆寫的執行階段環境變數清單。

error_handlers

選用元素。用來設定自訂的錯誤頁面,讓系統能針對不同的錯誤類型傳回。

這個元素可包含下列元素:

error_code
選用元素。error_code 可以是下列其中一個:
over_quota
表示應用程式超出資源配額
timeout
如果應用程式沒有在到期之前回應,系統就會提供這個元素。

error_code 為選用項目;如未指定,則指定檔案會是應用程式的預設錯誤回應。

file
每個檔案項目都代表一個要取代一般錯誤回應的靜態檔案。如果您指定的 file元素沒有對應的 error_code 元素,靜態檔案就會成為應用程式的預設錯誤頁面 自訂的錯誤資料必須小於 10 KB。
範例
error_handlers:
  - file: default_error.html

  - error_code: over_quota
    file: over_quota.html
handlers

選用元素。會列出網址模式,以及這些網址模式的處理方式說明。App Engine 可以執行應用程式程式碼,或提供與程式碼一併上傳的靜態檔案 (例如圖片、CSS 或 JavaScript),藉此處理網址。

查看處理常式和子元素語法。

inbound_services

選用元素。應用程式必須先啟用這些服務,才能讓這些服務接收內送要求。如要為應用程式啟用服務,請在 app.yaml 檔案中加入 inbound_services 區段。

warmup
啟用暖機要求。請參閱「設定暖機要求」。
範例:
inbound_services:
- warmup
instance_class

選用元素。該服務的執行個體類別。

視您服務的資源調度方式而定,可用的值如下:

自動調整資源配置
F1、F2、F4、F4_1G
預設:F1

您可以視需要使用 automatic_scaling 元素,變更自動調度資源的預設設定,例如執行個體數量下限和上限、延遲時間和並行連線。

注意:如果 instance_class 設為 F2 以上,您可以將 max_concurrent_requests 設為高於預設值 10 的值,藉此最佳化執行個體。如要找出最佳值,請逐步提高這個值,並監控應用程式的效能。

基本與手動資源調度
B1、B2、B4、B4_1G、B8
預設值:B2

基本和手動執行個體類別需要您指定 basic_scaling 元素或 manual_scaling 元素。

runtime

這是必要旗標,應用程式使用的執行階段環境名稱。例如,如要指定執行階段環境,請使用:

runtime: python315
service

如要建立服務,這就是必要元素。如要使用 default 服務,這就是選用元素。每個服務和每個版本都必須要有名稱。名稱可包含數字、字母和連字號,VERSION-dot-SERVICE-dot-PROJECT_ID 的合併長度 (其中 VERSION 是版本名稱、SERVICE 是服務名稱,PROJECT_ID 則是專案 ID) 不得超過 63 個字元,且開頭或結尾不得為連字號。請為每項服務和每個版本選擇不重複的名稱。請勿在服務和版本之間重複使用名稱。

範例:
service: service-name
service_account

選用。service_account 元素可讓您指定特定版本的服務帳戶,做為該版本的身分。存取其他 Google Cloud 服務及執行工作時,系統會使用指定的服務帳戶。

範例:
service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].
vpc_access

選用。為服務設定直連虛擬私有雲輸出,讓應用程式能向虛擬私有雲網路中的內部資源傳送要求。

這項設定包含下列欄位:

network_interface

指定 vpc_access 時,必須提供這個參數。包含用於直連虛擬私有雲輸出的網路介面設定。您可以指定 network、subnet 或兩者。如果只指定 network,則 subnet 預設為與 network 相同的名稱。

network
要用於直連虛擬私有雲輸出的虛擬私有雲網路名稱。如果是 Shared VPC,您可以指定完整資源路徑。
subnet
用於直接虛擬私有雲輸出的虛擬私有雲子網路名稱。如果是 Shared VPC,您可以指定完整資源路徑。
tags
選用。要與服務執行個體建立關聯的網路標記清單,用於防火牆規則和路由政策。
vpc_egress
選用。控管傳出流量的轉送方式。這個欄位支援下列設定:
private-ranges-only
預設值。只有傳送至內部 IP 位址的流量會透過虛擬私有雲網路轉送。網路流量會使用預設的 App Engine 路徑。
all-traffic
所有傳出要求都會透過虛擬私有雲網路轉送。

如要進一步瞭解如何設定直連虛擬私有雲輸出及管理執行個體限制,請參閱「使用直連虛擬私有雲輸出連線至虛擬私有雲網路」和「配額與限制」。

範例
vpc_access:
  network_interface:
    network: direct-vpc-network
    subnet: direct-vpc-subnetwork
    tags:
    - my-tag1
    - my-tag2
  vpc_egress: all-traffic
    
vpc_access_connector

選用。設定應用程式使用無伺服器 VPC 存取連接器,讓應用程式將要求傳送至虛擬私有雲網路中的內部資源。詳情請參閱「連線至虛擬私有雲網路」。

name
字串常值。在引號中指定無伺服器 VPC 存取連接器的完整名稱:
"projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME"
egress_setting
選用。預設為 private-ranges-only。egress_setting 可以是下列其中之一:
private-ranges-only
預設值。傳送至內部 IP 位址的要求會透過無伺服器 VPC 存取連接器,傳送至連結的虛擬私有雲網路。傳送至外部 IP 位址的要求會傳送至公開網際網路。
all-traffic
所有要求都會透過無伺服器 VPC 存取連接器,傳送至連結的虛擬私有雲網路。
範例
vpc_access_connector:
  name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME"
  egress_setting: all-traffic

處理常式元素

handlers 元素會提供網址模式清單,以及處理方式說明。App Engine 處理網址的方式有兩種,一種是執行應用程式程式碼,另一種是提供透過程式碼上傳的靜態檔案 (例如圖片、CSS 或 JavaScript)。

系統會依照模式在 app.yaml 檔案中的出現順序,從上到下來評估模式。並以第一個符合網址的對應模式來處理要求。

下表列出 handlers 元素的子元素,可控制靜態檔案、靜態目錄、Node.js 以外執行階段中的指令碼,以及其他設定的行為。

元素 說明
auth_fail_action

如要使用這個元素,請在 app_engine_bundled_services 清單中設定 user,藉此啟用 Users API,或將 app_engine_apis 欄位設為 true。

選用元素。說明當您已為處理常式指定 login 元素,但使用者沒有登入時要採取的行動。有兩個可用的值:

redirect
預設值。系統會將使用者重新導向至 Google 登入頁面;如果您使用 OpenID 驗證,則會將使用者重新導向至 /_ah/login_required。當使用者登入或建立帳戶之後,系統就會將該使用者重新導向回應用程式網址。
unauthorized
要求遭到拒絕,系統會傳回 HTTP 401 狀態碼和錯誤訊息。

如果應用程式需要表現不同的行為,您可以讓應用程式自己處理使用者登入作業。例如,要求登入 /profile/ 目錄,或要求管理員登入 /admin/ 目錄。詳情請參閱 Users API。

您可以設定處理常式,在使用者未登入時拒絕存取受保護的網址,而不是將使用者重新導向至登入頁面,方法是在處理常式的設定中加入 auth_fail_action: unauthorized。

expiration 選用。應該要讓該處理常式所提供的靜態檔案保留在網路 Proxy 和瀏覽器快取中的時間長度。這個值是由數字和單位 (以空格分隔) 組成的字串,其中單位可為 d (天數)、h (小時數)、m (分鐘數) 和 s (秒數)。舉例來說,"4d 5h" 會將快取到期時間設定為檔案首次收到要求後的 4 天又 5 小時。如果您省略這個值,系統會使用應用程序的 default_expiration。詳情請參閱「快取到期」。
http_headers

選用。您可以為靜態檔案或目錄處理常式的回應設定 HTTP 標頭。

如需在 script 處理常式中設定 HTTP 標頭,請改為在應用程式的程式碼中設定。如要瞭解哪些回應標頭會影響快取,請參閱「快取靜態內容」。

如要進一步瞭解 App Engine 專屬標頭,請參閱「要求標頭和回應」。

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

CORS 支援

這個功能的重要用途之一,就是支援跨來源資源共享 (CORS),例如存取另一個 App Engine 應用程式託管的檔案。

舉例來說,假設您有個遊戲應用程式 mygame.uc.r.appspot.com 會存取由 myassets.uc.r.appspot.com 代管的資產。不過,如果 mygame 嘗試向 myassets 提出 JavaScript XMLHttpRequest,這是不會成功的,除非 myassets 的處理常式傳回包含 http://mygame.uc.r.appspot.com 值的 Access-Control-Allow-Origin: 回應標頭。

如要讓靜態檔案處理常式傳回所需的回應標頭值,請使用以下指令:

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

提示:如要允許所有人存取您的資產,可以使用萬用字元 '*',而非 https://mygame.uc.r.appspot.com。

login

如要使用這個元素,請在 app_engine_bundled_services 清單中設定 user,藉此啟用 Users API,或將 app_engine_apis 欄位設為 true。

選用元素。決定網址處理常式是否要求使用者登入。

這個元素有三個可能的值:

optional
預設值。不要求使用者登入。
required
如果使用者已登入,處理常式會照常執行。如果使用者沒有登入,處理常式就會採取您在 auth_fail_action 指定的動作。
admin
就跟 required 一樣,會在使用者沒有登入時執行 auth_fail_action 。此外,只要使用者不是應用程式的系統管理員,就會收到錯誤訊息,無論 auth_fail_action 設定為何。如果使用者是系統管理員,處理常式就會繼續執行。

當 login 設定不是 optional 的網址處理常式與某個網址相符時,處理常式會先查看使用者是否已使用應用程式的驗證選項登入應用程式。如果使用者沒有登入,系統預設會將該使用者重新導向至登入頁面。您也可以使用 auth_fail_action 來設定應用程式,直接拒絕未經適當驗證的使用者發出的處理常式要求,而不是將該使用者重新導向至登入頁面。

注意:App Engine 會為內部要求設定適當的 X-Appengine 特殊標頭,因此內部要求也會滿足 admin 登入限制。舉例來說,由於 App Engine 會在各個要求設定 HTTP 標頭 X-Appengine-Cron: true,因此以 cron 排定的工作會滿足 admin 限制。不過,這些要求不會滿足 required 登入限制,因為以 cron 排定的工作並不是以使用者的身分執行。

mime_type

選用。如有指定,這個處理常式將使用指定的 MIME 類型提供所有的檔案。如未指定,則檔案的 MIME 類型將衍生自檔案名稱的副檔名。如果您把同一個檔案以多個不同的副檔名上傳,則最後產生的副檔名可能會取決於上傳的順序。

如要進一步瞭解可能的 MIME 媒體類型,請參閱 IANA MIME 媒體類型網站。

redirect_http_response_code

選用。redirect_http_response_code 會與 secure 設定搭配使用,用於設定執行重新導向時傳回的 HTTP 回應代碼,具體取決於 secure 設定的配置方式。以下是 redirect_http_response_code 元素可用的值:

301
「Moved Permanently」回應代碼。
302
找到回應代碼。
303
請參閱「其他回應代碼」。
307
暫時重新導向回應代碼。

當使用者的要求重新導向時,HTTP 狀態碼會設為 redirect_http_response_code 參數的值。如果沒有這個參數,系統會傳回 302。

script

選用元素。指定傳送至特定處理常式的要求應指定您的應用程式。script 元素唯一接受的值是 auto,因為所有流量都是使用進入點指令提供。如要使用靜態處理常式,至少要有一個處理常式包含 script: auto 行,或定義 entrypoint 元素,才能成功部署。

secure 選用。任何網址處理常式都可以使用 secure 設定,包括靜態檔案處理常式。以下是 secure 可用的值:
optional
只要 HTTP 或 HTTPS 要求的網址符合處理常式,就能夠在不重新導向的情況下順利執行。應用程式可檢查要求來決定要使用哪個通訊協定,並依此做出回應。當您沒有提供 secure 給處理常式時,這就會是預設值。
never
如果要求的網址符合這個處理常式,且該要求使用 HTTPS,系統就會自動將該要求重新導向至對等的 HTTP 網址。當使用者的 HTTPS 要求遭到重新導向為 HTTP 要求時,要求中的查詢參數會遭到移除。這能避免讓使用者不小心透過不安全的連線提交應該要透過安全連線傳送的查詢資料。
always
如果要求的網址符合這個處理常式,且該要求沒有使用 HTTPS,系統就會自動將該要求重新導向至相同路徑的 HTTPS 網址。而系統會保留查詢參數,以便在重新導向時使用。
Python 範例
handlers:
- url: /youraccount/.*
  secure: always
  script: auto

如要使用 REGION_ID.r.appspot.com 網域指定特定版本的應用程式,請將通常用於分隔網址子網域元件的半形句號替換為「-dot-」字串,例如:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

如要搭配 HTTPS 使用自訂網域,您必須先啟用並設定該網域的安全資料傳輸層 (SSL) 憑證。

Google 帳戶的登入和登出作業永遠都是使用安全連線來進行,與應用程式的網址設定方式無關。

static_dir

選用。從應用程式根目錄到靜態檔案所屬目錄的路徑。相符的 url 模式結尾後的所有內容都會附加到 static_dir 後方,以便形成所要求檔案的完整路徑。

靜態目錄中的每個檔案,都是使用與該檔案的副檔名對應的 MIME 類型來提供,除非該類型遭到目錄的 mime_type 設定覆寫。指定目錄中的所有檔案都會上傳成靜態檔案,無法當做指令碼來執行。

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

選用。靜態檔案模式處理常式會建立網址模式與隨應用程式上傳的靜態檔案路徑之間的關聯。網址模式規則運算式可定義規則運算式的分組,以用來建構檔案路徑。您可以使用這個屬性取代 static_dir,對應至目錄結構中的特定檔案,而不必對應整個目錄。

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

靜態檔案不得與應用程式程式碼檔案相同。

upload

選用。與這個處理常式將會參照的所有檔案之路徑相符的規則運算式。這是必要的,因為處理常式無法判斷應用程式目錄中的哪些檔案會與指定的 url 和 static_files 模式相對應。系統會將靜態檔案和應用程式檔案分開上傳及處理。上述範例可能會使用下列的 upload 模式:archives/(.*)/items/(.*)

url

handlers 下方的必要元素。網址模式,可包含分組的規則運算式。舉例來說,/profile/(.*)/(.*) 會符合網址 /profile/edit/manager,且會把 edit 和 manager 當做第一個和第二個分組。

當網址模式與下列元素搭配使用時,該網址模式的行為會稍有不同:

static_dir
會使用網址前置字串。當規則運算式模式與 static_dir 元素搭配使用時,不應該包含分組。以這個前置字串開頭的所有網址都會由這個處理常式處理,該處理常式會把網址中位於前置字串之後的部分當做檔案路徑的一部分。
static_files
靜態檔案模式處理常式會建立網址模式與隨應用程式上傳的靜態檔案路徑之間的關聯。網址模式規則運算式可定義規則運算式的分組,以用來建構檔案路徑。您可以使用這個屬性取代 static_dir,對應至目錄結構中的特定檔案,而不必對應整個目錄。

資源調度元素

下表中的元素可設定應用程式的擴充方式。如未指定調度類型,系統會預設為自動調度資源。

如要進一步瞭解 App Engine 應用程式如何調度資源,請參閱「資源調度類型」。

元素 說明
automatic_scaling

選用。僅適用於使用 F1 以上執行個體類別的應用程式。

指定這個元素,即可變更自動調度資源的預設設定,例如設定服務的執行個體數量、延遲時間和並行連線的最低和最高等級。

這個元素可包含下列元素:

max_instances
選用元素。請指定介於 0 到 2147483647 之間的值;如果指定為 0,就會停用這個設定。

這個參數會指定 App Engine 為這個模組版本建立的執行個體數量上限。因此很適合用來限制模組的成本。

min_instances
選用。指定 App Engine 為這個模組版本建立的執行個體數量下限。這些執行個體會在收到要求時提供流量,且在系統已視需要啟動其他執行個體以處理流量之後,還是會繼續提供流量。

請指定介於 0 到 1000 之間的值。您可以將這項參數的值設為 0,允許系統進行資源調度時將執行個體數調整為 0,這麼一來,在沒有任何處理中的要求時,就能降低成本。請注意,系統是依指定的執行個體數量收費,與執行個體是否收到流量無關。

max_idle_instances

選用。App Engine 應為這個版本維持的閒置執行個體數量上限。請指定 1 到 1000 之間的值。如未指定,預設值為 automatic,表示 App Engine 會管理閒置執行個體的數量。

請注意以下幾點:

  • 如果上限較高,當負載在暴增之後回到正常水準時,閒置執行個體數量的減少速率就會降低。這可協助應用程式在要求負載變動時維持穩定的效能,但也會在這種負載較重的時期提高閒置執行個體的數量 (進而提高執行成本)。
  • 如果上限較低,就能降低執行成本,但在負載不穩定時,效能就可能會降低。

注意:在負載暴增結束並回到正常程度時,閒置執行個體的數量可能會暫時超出您指定的上限。不過,系統不會針對超出您指定數量上限的執行個體收費。

min_idle_instances

選用:要保持執行狀態並準備為這個版本提供流量的額外執行個體數量。

App Engine 會根據 target_cpu_utilization 和 target_throughput_utilization 等資源調度設定,計算處理目前應用程式流量所需的執行個體數量。設定 min_idle_instances 可指定除了這個計算出的數量之外,還要執行的執行個體數量。舉例來說,如果 App Engine 計算出需要 5 個執行個體才能處理流量,且 min_idle_instances 設為 2,App Engine 就會執行 7 個執行個體 (根據流量計算出的 5 個,加上 min_idle_instances 額外指定的 2 個)。

請注意,系統是依指定的執行個體數量收費,與執行個體是否收到流量無關。請注意以下幾點:

  • 如果下限較低,閒置期間的執行成本就會降低,但這也代表在發生負載突然暴增的情況時,可立刻做出回應的執行個體數量會較少。
  • 如果下限較高,應用程式就能應付要求負載暴增的情況。App Engine 會讓最低數量的執行個體保持運作,以處理傳入的要求。無論指定的執行個體是否正在處理要求,系統都會依據指定的執行個體數量向您收費。

    如果設定閒置執行個體數量下限,等待延遲時間對應用程式效能的影響就會降低。

target_cpu_utilization
選用元素。請指定介於 0.5 到 0.95 之間的值,預設值為 0.6。

這項參數是用來指定 CPU 用量的臨界值,讓系統在該用量達到臨界值時啟動新的執行個體來處理流量,進而讓您可在效能和成本之間取得平衡。如果您把該值調低,效能和成本就會提高;如果您把這個值調高,效能和成本都會下降。舉例來說,如果值為 0.7,則代表系統會在 CPU 用量達到 70% 時啟動新的執行個體。

target_throughput_utilization
選用元素。請指定介於 0.5 到 0.95 之間的值,預設值為 0.6。

如果與 max_concurrent_requests搭配使用,可指定為因應並行要求而啟動新執行個體的時機。當並行要求數量達到 max_concurrent_requests 乘以 target_throughput_utilization 的值時,排程器會嘗試啟動新的執行個體。

max_concurrent_requests

選用。排程器產生新執行個體前,自動調度資源執行個體可接受的並行要求數量 (預設值:10,最大值:1000)。

如果與 target_throughput_utilization 搭配使用,可指定為因應並行要求而啟動新執行個體的時機。當並行要求數量達到 max_concurrent_requests 乘以 target_throughput_utilization 的值時,排程器會嘗試啟動新的執行個體。

除非需要單一執行緒,否則建議您不要將 max_concurrent_requests 設為小於 10。如果值小於 10,系統建立的執行個體數量可能會超過安全執行緒應用程式所需,進而產生不必要的費用。

如果這項設定過高,API 延遲時間可能會增加。請注意,排程器可能會在要求數量達到實際的上限之前,就產生新的執行個體。

max_pending_latency

指定 App Engine 在啟動額外的執行個體來處理要求以降低等待延遲時間前,最多應讓要求在待處理佇列中等候多久的時間。達到這個門檻時,系統會發出向上擴充的信號,並增加執行個體數量。

如未指定,預設值為 automatic。這表示要求最多可在待處理佇列中保留 10 秒 (待處理要求時間上限),然後才會觸發新的執行個體啟動。

如果上限偏低,App Engine 會提早為待處理的要求啟動新的執行個體,進而提升效能,但也會增加執行成本。

如果上限偏高,使用者可能需要等待較久的時間,系統才會處理他們的要求 (如果要求處於待處理狀態,且沒有閒置的執行個體可以處理要求),但應用程式的執行費用會較低。

min_pending_latency

您可以設定這個選用元素,指定 App Engine 應允許要求在待處理佇列中等待的最短時間,超過這個時間後,App Engine 就會啟動新的執行個體來處理要求。指定值可以降低執行成本,但使用者必須等待更久,要求才會獲得處理。

免費應用程式的預設值為 500ms。如果是付費應用程式,預設值為 0。

這個元素會與 max_pending_latency 元素搭配運作,決定 App Engine 建立新執行個體的時機。如果佇列中有待處理的要求:

  • 如果低於您指定的min_pending_latency,App Engine 就不會建立新的執行個體。
  • 超過 max_pending_latency 時,App Engine 會嘗試建立新的執行個體。
  • 在 min_pending_latency 和 max_pending_latency 指定的時間之間,App Engine 會嘗試重複使用現有執行個體。如果沒有任何執行個體能在 max_pending_latency 之前處理要求,App Engine 就會建立新的執行個體。
範例
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

如果應用程式使用 B1 以上的執行個體類別,則必須指定這個元素或 manual_scaling。

這個元素可讓執行個體類別 B1 以上版本進行基本資源調度,並可包含下列元素:

max_instances
必要元素。指定 App Engine 為這個服務版本建立的執行個體數量上限,適合用來限制服務的成本。
idle_timeout
選用元素。執行個體會在收到最後一個要求後,經過這段時間再關閉。預設值為 5 分鐘 (5m)。
範例
basic_scaling:
  max_instances: 11
  idle_timeout: 10m
manual_scaling

如果應用程式使用 B1 以上的執行個體類別,則必須指定這個元素或 basic_scaling。

這個元素可讓您手動調度 B1 以上執行個體類別的資源,且可包含下列元素:

instances
一開始要指派給服務的執行個體數量。
範例
manual_scaling:
  instances: 5