區域 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
檔案。
目錄結構
如要進一步瞭解如何在應用程式中建構多項服務,請參閱在 App Engine 中建構網路服務一文。範例
以下是 PHP 5 應用程式的 app.yaml
檔案範例:
runtime: php55 api_version: 1 handlers: # Serve images as static resources. - url: /(.+\.(gif|png|jpg))$ static_files: \1 upload: .+\.(gif|png|jpg)$ application_readable: true # Serve php scripts. - url: /(.+\.php)$ script: \1
上述範例會提供副檔名為 gif
、png
或 jpg
的檔案做為靜態資源。應用程式碼可在執行階段讀取這些經過設定的檔案。
這個範例還會提供所有 PHP 指令碼。您可以使用 url: /([^/]+\.php)
運算式,讓指令碼處理常式只處理根層級的指令碼。針對現有應用程式,建議模擬 Apache mod_rewrite $_GET['q']
轉送。
以下列出更詳盡的 app.yaml
設定範例:
runtime: php55 api_version: 1 handlers: - url: / script: home.php - url: /index\.html script: home.php - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.php login: admin - url: /.* script: not_found.php
語法
app.yaml
的語法採用 YAML 格式。
YAML 格式支援註解功能,因此系統會忽略以井字 (#
) 字元開頭的行:
# This is a comment.
網址和檔案路徑模式會使用 POSIX 擴充規則運算式語法,但不包括對照元素和對照類別。系統支援對分組相符項目 (例如 \1
) 的反向參照,也支援下列擴充項目:\w \W \s \S \d \D
。
執行階段和應用程式元素
元素 | 說明 |
---|---|
application |
我們建議您移除
如要進一步瞭解如何使用這些指令,請參閱部署應用程式的相關說明。 應用程式 ID 是您在 Google Cloud console中建立應用程式時指定的 Google Cloud 控制台專案 ID。 |
api_version |
必要元素。應用程式使用的特定執行階段環境中的 API 版本。 這個欄位已在較新的 App Engine 執行階段淘汰。
當 Google 宣布要支援執行階段環境中 API 的新版本時,已部署的應用程式還是會繼續使用已編寫在設定檔中的 API 版本。如要將應用程式升級來使用新的 API 版本,請變更這個值,然後將應用程式重新部署至 App Engine。如果您將這個值指定為
目前 App Engine 有一個版本的 |
default_expiration |
(非必要) 會針對應用程式的所有靜態檔案處理常式,設定全域的預設快取有效期限。您也可以設定特定靜態檔案處理常式的快取效期。這個值是由數字和單位 (以空格分隔) 組成的字串,其中單位可為 d (天數)、h (小時數)、m (分鐘數) 和 s (秒數)。舉例來說, runtime: php55 api_version: 1 default_expiration: "4d 5h" handlers: # ... 詳情請參閱「快取效期」。 |
env_variables
|
選用元素。您可以在
開頭為 env_variables: MY_VAR: "my value" MY_VAR 和 my value 是您要定義的環境變數名稱和值,且各個環境變數項目位在 env_variables 元素下方並縮排兩個空格。未指派值的環境變數預設為 "None" 。
接著,您可以使用 echo getenv('MY_VAR'); echo $_SERVER['MY_VAR']; |
error_handlers |
選用元素。用來設定自訂的錯誤頁面,讓系統能針對不同的錯誤類型傳回。 這個元素可包含下列元素:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
必要元素。會列出網址模式,以及這些網址模式的處理方式說明。App Engine 處理網址的方式有兩種,一種是執行應用程式的程式碼,另一種則是提供隨程式碼上傳的靜態檔案,例如圖片、CSS 或 JavaScript。 |
inbound_services |
選用元素。應用程式必須先啟用這些服務,才能讓這些服務接收內送要求。您可以在 可用的內送服務如下: 示例:inbound_services: - mail - warmup |
instance_class |
選用元素。該服務的執行個體類別。 視您服務的資源調度方式而定,可用的值如下:
|
module |
注意:「模組」現在稱為「服務」。 如要透過 gcloud CLI 管理應用程式,請改用 service 元素。 |
runtime |
這是必要旗標,應用程式使用的執行階段環境名稱。例如,如要指定 PHP 5,請使用: runtime: php55 |
service |
「服務」先前稱為「模組」。
僅由 gcloud CLI 或以 gcloud CLI 為基礎的外掛程式提供支援,例如:
如要建立服務,這就是必要元素。如要使用 service: service-name
附註: module: service-name |
service_account |
(非必要) service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
skip_files |
選用元素。
skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ 預設模式會排除下列檔案:名稱格式為
如要擴充上述規則運算式清單,請複製上述清單並貼到 skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ - ^(.*/)?.*\.bak$
如要略過整個目錄,請將該目錄名稱新增到清單中。舉例來說,如要略過名為 skip_files: - logs/ |
version |
我們建議您移除
如要進一步瞭解如何使用這個指令,請參閱「 部署應用程式」。 您部署到 App Engine 的應用程式程式碼的版本 ID。
版本 ID 可包含小寫字母、數字和連字號,但開頭不能是
注意:請在版本名稱的開頭使用字母,以便與永遠都以數字指定的執行個體有所區別。這樣一來,
每個應用程式版本都會保留自己的 |
處理常式元素
handlers
元素是 app.yaml
設定檔中的必要元素。這個元素提供網址模式清單,以及這些網址模式的處理方式說明。App Engine 處理網址的方式有兩種,一種是執行應用程式的程式碼,另一種則是提供隨程式碼上傳的靜態檔案,例如圖片、CSS 或 JavaScript。
系統會依照模式在 app.yaml
檔案中的出現順序,從上到下來評估模式。而第一個符合網址的對應模式,就會用來處理要求。
下列表格列出 handlers
元素的子元素,而這些子元素可控制指令碼、靜態檔案、靜態目錄和其他設定的行為。
元素 | 說明 |
---|---|
application_readable |
(非必要) 布林值。根據預設,在靜態檔案處理常式中宣告的檔案會上傳做為靜態資料,且只會提供給使用者,無法讓應用程式讀取。如果將這個欄位設為 true,該檔案也會上傳成程式碼資料,因此就能讓應用程式讀取。這兩種上傳資料都會計入您的程式碼和靜態資料儲存空間資源配額。
這個欄位已在較新的 App Engine 執行階段淘汰。 |
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 # ... 附註:如要讓每個人都能存取您的資產,請使用萬用字元 |
mime_type |
(非必要) 如有指定,這個處理常式將使用指定的 MIME 類型提供所有的檔案。如未指定,則檔案的 MIME 類型將衍生自檔案名稱的副檔名。如果您把同一個檔案以多個不同的副檔名上傳,則最後產生的副檔名可能會取決於上傳的順序。 如要進一步瞭解可用的 MIME 媒體類型,請瀏覽 IANA MIME 媒體類型網站 |
redirect_http_response_code |
(非必要)
handlers: - url: /youraccount/.* script: accounts.php secure: always redirect_http_response_code: 301
當使用者的要求遭到重新導向時,系統會將 HTTP 狀態碼設定為 |
script |
選用。 指定從應用程式根目錄到指令碼的路徑: ... handlers: - url: /profile/(.*)/(.*) script: /employee/\2/\1.php # specify a script 在較新的 App Engine 執行階段中,這個欄位的行為已有所變更。 |
secure |
(非必要) 所有網址處理常式都可以使用 secure 設定,包括指令碼處理常式和靜態檔案處理常式。以下是 secure 可用的值:
handlers: - url: /youraccount/.* script: accounts.php secure: always 開發網路伺服器並不支援 HTTPS 連線,它會忽略
如要使用 如要搭配 HTTPS 使用自訂網域,您必須先啟用並設定該網域的安全資料傳輸層 (SSL) 憑證。 Google 帳戶的登入和登出作業永遠都是使用安全連線來進行,與應用程式的網址設定方式無關。 |
static_dir
|
(非必要) 從應用程式根目錄到靜態檔案所屬目錄的路徑。相符的
靜態目錄中的每個檔案,都是使用與該檔案的副檔名對應的 MIME 類型來提供,除非該類型遭到目錄的
這個目錄中的所有檔案,都會隨著應用程式上傳成靜態檔案。App Engine 會將靜態檔案和應用程式的檔案分開儲存及提供。根據預設,靜態檔案不會出現在應用程式的檔案系統中,但您可以將 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)$ # ...
App Engine 會將靜態檔案和應用程式的檔案分開儲存及提供。根據預設,靜態檔案不會出現在應用程式的檔案系統中,但您可以將 靜態檔案不能與應用程式的程式碼檔案相同。如果靜態檔案路徑與動態處理常式所用的指令碼路徑相符,動態處理常式將無法使用該指令碼。 |
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 |