設定檔

服務的每個版本是由 .yaml 檔案來定義,該檔案會說明服務與版本的名稱。YAML 檔案通常與其定義的服務同名,但這並非必要條件。如要部署某項服務的數個版本,可以在同一個目錄中建立多個 yaml 檔案 (每個版本各一個)。

一般來說,您可以為各項服務建立目錄,當中包含該項服務的 YAML 檔案和相關聯原始碼。最上層應用程式目錄中會包含選用的應用程式層級設定檔 (dispatch.yamlcron.yamlindex.yamlqueue.yaml)。以下範例呈現了三項服務。service1service2 中的原始檔與 YAML 檔案位於相同層級,service3 中則包含兩個版本的 YAML 檔案。

YAML 服務階層圖

如為小型、簡易型專案,您可以將所有應用程式檔案存放於同一個目錄:

小型 YAML 服務階層圖

每一個 YAML 檔案都必須含有一個版本參數。如要定義預設服務,您可以明確納入 service: default 參數,或是將服務參數排除在檔案之外。

每個服務設定檔都會定義特定服務/版本的資源調度類型和執行個體類別。視指定的資源調度類型而定,您必須使用不同的資源調度參數。如果您未指定資源調度設定,預設值為自動調整資源配置。如需資源調度和執行個體類別設定的相關說明,請參閱 app.yaml 參考資料部分。

您也可以針對各項服務指定設定,將網址要求對應至特定指令碼及識別靜態檔案,藉此提升伺服器的工作效率。這些設定也會包含在 yaml 檔案中,相關說明請見 app.yaml 參考資料部分。

預設服務

每個應用程式均有一項預設服務。您可以在 app.yaml 中使用 service: default 設定來定義預設服務,不過此為選用動作。凡是與服務有關的設定參數均可套用至預設服務。

選用設定檔

這些設定檔控制適用於應用程式中所有服務的選用功能:

  • dispatch.yaml 會根據網址中的路徑或主機名稱,將傳入要求傳送至特定服務,藉此覆寫轉送預設規則。
  • queue.yaml 會同時設定發送佇列和提取佇列。
  • 如果應用程式使用 Datastore 查詢,index.yaml 會指定應用程式需要哪些索引。
  • cron.yaml 會設定定期工作,依照指定的時間或間隔規律執行特定工作。

如要在 App Engine 中部署這些設定檔的更新內容,請在設定檔所在的目錄中執行以下指令:

    gcloud app deploy [CONFIG_FILE]

範例

以下舉例說明如何設定應用程式的 YAML 檔案,這個應用程式包含三項服務:一項是處理網路要求的預設服務,另外兩項則是處理行動要求和後端處理的服務。

首先,請定義名為 app.yaml 的設定檔,用於處理所有與網頁相關的要求:

runtime: python27
api_version: 1
threadsafe: true

如果此應用程式的 Google Cloud 控制台專案 ID 為 simple-sample,則這項設定會建立預設服務,並自動調整規模,公開地址為 https://simple-sample.uc.r.appspot.com

接下來,假設您要建立服務來處理行動網頁要求。為了方便行動使用者 (在本例中),最大待處理延遲時間將只會是一秒,而且我們會隨時保留至少兩個閒置的例項。如要設定這項功能,請建立 mobile-frontend.yaml 設定檔,並加入下列內容:

service: mobile-frontend
runtime: python27
api_version: 1
threadsafe: true

automatic_scaling:
  min_idle_instances: 2
  max_pending_latency: 1s

這時,您就能在 https://mobile-frontend-dot-simple-sample.uc.r.appspot.com 中存取這個檔案建立的服務。

最後,新增名為 my-service 的服務,用於處理靜態後端工作。這可能是從 Datastore 匯出資料至 BigQuery 的持續性工作。其工作量相對固定,因此,無論在任何指定時間,您只需要一項常駐服務。此外,這些工作需要處理大量記憶體內處理作業,因此您需要使用記憶體配置較多的服務。如要設定這項功能,請建立 my-service.yaml 設定檔,並加入下列內容。

service: my-service
runtime: python27
api_version: 1
threadsafe: true

instance_class: B8
manual_scaling:
  instances: 1

這時,您就能在 https://my-service-dot-simple-sample.uc.r.appspot.com 中存取這個檔案建立的服務。

請注意 manual_scaling: 設定。instances: 參數可讓 App Engine 知道需要為這項服務建立幾個執行個體。

另外建議您下載這個 Python 示範應用程式,好好研究一下。