服務的每個版本是由 .yaml
檔案來定義,該檔案會說明服務與版本的名稱。YAML 檔案通常與其定義的服務同名,但這並非必要條件。如要部署某項服務的數個版本,可以在同一個目錄中建立多個 yaml 檔案 (每個版本各一個)。
一般來說,您可以為各項服務建立目錄,當中包含該項服務的 YAML 檔案和相關聯原始碼。最上層應用程式目錄中會包含選用的應用程式層級設定檔 (dispatch.yaml
、cron.yaml
、index.yaml
和 queue.yaml
)。以下範例呈現了三項服務。service1
和 service2
中的原始檔與 YAML 檔案位於相同層級,service3
中則包含兩個版本的 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 知道需要為這項服務建立幾個執行個體。