區域 ID
REGION_ID
是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r
。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
進一步瞭解區域 ID。
您可以在 app.yaml
檔案中設定 App Engine 應用程式的設定。app.yaml
檔案也包含應用程式程式碼的資訊,例如執行階段和最新的版本 ID。
應用程式中的每個服務都有自己的 app.yaml
檔案,做為該服務的部署作業描述元。您必須先為應用程式中的 default
服務建立 app.yaml
檔案,才能為其他的服務建立並部署 app.yaml
檔案。
如為 Go 1.11,則 app.yaml
檔案至少須包含一個 runtime
項目。如需瀏覽內容摘要,請參閱定義執行階段設定一文。
目錄結構
每項服務的資料夾都必須包含app.yaml
檔案,以及一或多個開頭包含 package main
陳述式的 Go 來源檔案。如要進一步瞭解如何在應用程式中建構多項服務,請參閱在 App Engine 中建構網路服務一文。
範例
以下是 Go 1.11 應用程式的 app.yaml
檔案範例:
runtime: go111 instance_class: F2 env_variables: BUCKET_NAME: "example-gcs-bucket" handlers: - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /.* script: auto
語法
app.yaml
的語法採用 YAML 格式。
YAML 格式支援註解功能,因此系統會忽略以井字 (#
) 字元開頭的行:
# This is a comment.
網址和檔案路徑模式會使用 POSIX 擴充規則運算式語法,但不包括對照元素和對照類別。系統支援對分組相符項目 (例如 \1
) 的反向參照,也支援下列擴充項目:\w \W \s \S \d \D
。
執行階段和應用程式元素
元素 | 說明 |
---|---|
build_env_variables
|
(選用步驟) 如果您使用的執行階段支援建構套件,可以在 詳情請參閱「 使用建構環境變數」。 |
default_expiration |
(選用步驟) 會針對應用程式的所有靜態檔案處理常式,設定全域的預設快取有效期限。您也可以設定特定靜態檔案處理常式的快取效期。這個值是由數字和單位 (以空格分隔) 組成的字串,其中單位可為 d (天數)、h (小時數)、m (分鐘數) 和 s (秒數)。舉例來說, runtime: go111 default_expiration: "4d 5h" handlers: # ... 詳情請參閱「快取效期」。 |
entrypoint |
選用元素。在應用程式啟動時執行 |
env_variables
|
選用元素。您可以在
開頭為 env_variables: MY_VAR: "my value" MY_VAR 和 my value 是您要定義的環境變數名稱和值,且各個環境變數項目位在 env_variables 元素下方並縮排兩個空格。未獲派值的環境變數預設為 "None" 。
接著,您可以使用 另請參閱無法覆寫的 執行階段環境變數清單。 |
error_handlers |
選用元素。用來設定自訂的錯誤頁面,讓系統能針對不同的錯誤類型傳回。 這個元素可包含下列元素:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
選用元素。會列出網址模式,以及這些網址模式的處理方式說明。App Engine 處理網址的方式有兩種,一種是執行應用程式的程式碼,另一種則是提供隨程式碼上傳的靜態檔案,例如圖片、CSS 或 JavaScript。 |
inbound_services |
選用元素。應用程式必須先啟用這些服務,才能讓這些服務接收內送要求。如要啟用 Go 1.11 應用程式的服務,請在
|
instance_class |
選用元素。該服務的執行個體類別。 視您服務的資源調度方式而定,可用的值如下:
|
main |
選用元素。主要套件的路徑或完整套件名稱。只有在應用程式使用 Go 模組模式時,才適用這項設定。
如果您的 myapp/ ├── app.yaml ├── go.mod ├── cmd │ └── web │ └── main.go └── pkg └── users └── users.go 那麼您應該使用: main: ./cmd/web 或 main: example.com/myapp/cmd/web |
runtime |
這是必要旗標,應用程式使用的執行階段環境名稱。舉例來說,如要指定 Go 1.11,請使用: runtime: go111 |
service |
如要建立服務,這就是必要元素。如要使用 service: service-name |
service_account |
(選用步驟) service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
vpc_access_connector |
選用元素。將您的應用程式設定為使用無伺服器的虛擬私人雲端存取連接器,讓該應用程式能夠將要求傳送至虛擬私人雲端網路中的內部資源。詳情請參閱「連線至虛擬私有雲網路」。
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
處理常式元素
handlers
元素提供網址模式清單,以及這些網址模式的處理方式說明。App Engine 處理網址的方式有兩種,一種是執行應用程式碼,另一種是提供隨程式碼一併上傳的靜態檔案 (例如圖片、CSS 或 JavaScript)。
系統會依照模式在 app.yaml
檔案中的出現順序,從上到下來評估模式。而第一個符合網址的對應模式,就會用來處理要求。
下列表格列出 handlers
元素的子元素,而這些子元素可控制指令碼、靜態檔案、靜態目錄和其他設定的行為。
元素 | 說明 |
---|---|
auth_fail_action |
選用元素。說明當您已為處理常式指定
如果應用程式需要表現不同的行為,您可以讓應用程式自己處理使用者登入作業。詳情請參閱 Users API。
以下範例需要 您可以在處理常式的設定中加入 |
expiration
|
選用。應該要讓該處理常式所提供的靜態檔案保留在網路 Proxy 和瀏覽器快取中的時間長度。這個值是由數字和單位 (以空格分隔) 組成的字串,其中單位可為 d (天數)、h (小時數)、m (分鐘數) 和 s (秒數)。舉例來說,"4d 5h" 會將快取到期時間設定為檔案首次收到要求後的 4 天又 5 小時。如果您省略這個值,系統會使用應用程序的 default_expiration 。詳情請參閱「快取有效期限」。 |
http_headers |
(選用步驟) 您可以針對靜態檔案或目錄處理常式的回應設定 HTTP 標頭。如果您需要在 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 應用程式託管的檔案。
舉例來說,假設您有個遊戲應用程式 如要讓靜態檔案處理常式傳回所需的回應標頭值,請使用以下指令: handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ... 附註:如要讓每個人都能存取您的資產,請使用萬用字元 |
login |
選用元素。決定網址處理常式是否要求使用者登入。 這個元素有三個可用的值:
當
注意:App Engine 會為內部要求設定適當的 |
mime_type |
(選用步驟) 如有指定,這個處理常式將使用指定的 MIME 類型提供所有的檔案。如未指定,則檔案的 MIME 類型將衍生自檔案名稱的副檔名。如果您把同一個檔案以多個不同的副檔名上傳,則最後產生的副檔名可能會取決於上傳的順序。 如要進一步瞭解可用的 MIME 媒體類型,請瀏覽 IANA MIME 媒體類型網站 |
redirect_http_response_code |
(選用步驟)
handlers: - url: /youraccount/.* script: auto secure: always redirect_http_response_code: 301
當使用者的要求遭到重新導向時,系統會將 HTTP 狀態碼設定為 |
script |
選用。
指定送向特定處理常式的要求應以您的應用程式為目標。 handlers: - url: /images static_dir: static/images - url: /.* secure: always redirect_http_response_code: 301 script: auto |
secure |
(選用步驟) 所有網址處理常式都可以使用 secure 設定,包括指令碼處理常式和靜態檔案處理常式。以下是 secure 可用的值:
handlers: - url: /youraccount/.* script: auto secure: always
如要使用 如要搭配 HTTPS 使用自訂網域,您必須先啟用並設定該網域的安全資料傳輸層 (SSL) 憑證。 Google 帳戶的登入和登出作業永遠都是使用安全連線來進行,與應用程式的網址設定方式無關。 |
static_dir
|
(選用步驟) 從應用程式根目錄到靜態檔案所屬目錄的路徑。相符的
靜態目錄中的每個檔案,都是使用與該檔案的副檔名對應的 MIME 類型來提供,除非該類型遭到目錄的 handlers: # All URLs beginning with /stylesheets are treated as paths to # static files in the stylesheets/ directory. - url: /stylesheets static_dir: stylesheets # ... |
static_files
|
(選用步驟) 靜態檔案模式處理常式會建立網址模式與隨應用程式上傳的靜態檔案路徑之間的關聯。網址模式規則運算式可定義規則運算式的分組,以用來建構檔案路徑。您可以在不用對應整個目錄的情況下使用這個方法,而不是使用 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 |
當網址模式與下列元素搭配使用時,該網址模式的行為會稍有不同:
|
資源調度元素
下表中的元素會設定應用程式的資源調度方式。如要進一步瞭解 App Engine 應用程式的資源調度方式,請參閱資源調度類型。
元素 | 說明 |
---|---|
automatic_scaling |
(選用步驟) 僅適用於使用 F1 以上執行個體類別的應用程式。 指定這個元素可變更自動資源調度的預設設定,例如設定服務的執行個體數量、延遲時間和並行連線數的上、下限。 這個元素可包含下列元素:
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 以上的執行個體類別,則必須指定這個元素或 這個元素可對 B1 以上的執行個體類別進行基本縮放, 可包含下列元素:
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
如果應用程式使用 B1 以上的執行個體類別,則必須指定這個元素或 這個元素可手動調整 B1 以上執行個體類別的規模,並可包含下列元素:
manual_scaling: instances: 5 |