區域 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 中建構網路服務一文。範例
以下是 Python 2 應用程式的 app.yaml
檔案範例:
runtime: python27 api_version: 1 threadsafe: true handlers: - url: / script: home.app - url: /index\.html script: home.app - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.app login: admin - url: /.* script: not_found.app
script:
指令可包含結尾為 .py
的檔案路徑 (代表指令碼使用 CGI),或是套件名稱以英文句點分隔的 Python 模組路徑 (代表指令碼使用 WSGI)。
語法
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 有一個版本的 |
auto_id_policy |
(非必要) 如果您要自動設定實體 ID,可以透過設定自動 ID 政策來變更所使用的方法。以下是有效的選項:
|
builtins |
選用元素。Python 2 SDK 包含了幾個用於一般應用程式函式的內建處理常式。而 這個欄位已在 Python 3 執行階段淘汰。 以下是您可以使用的內建處理常式:
builtins: - deferred: on - appstats: on
builtins: - name: on 等同於: includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
當您在
舉例來說,假設下列 handlers: - url: /.* script: main.app builtins: - appstats: on 處理常式的結果清單為: [/_ah/stats, /.*]
如果 includes: - included.yaml
且 handlers: - url: /.* script: main.app builtins: - appstats: on 處理常式的結果清單現在會是: [/.*, /_ah/stats]
|
default_expiration |
(非必要) 會針對應用程式的所有靜態檔案處理常式,設定全域的預設快取有效期限。您也可以設定特定靜態檔案處理常式的快取效期。這個值是由數字和單位 (以空格分隔) 組成的字串,其中單位可為 d (天數)、h (小時數)、m (分鐘數) 和 s (秒數)。舉例來說, runtime: python27 api_version: 1 threadsafe: true default_expiration: "4d 5h" handlers: # ... 詳情請參閱「快取效期」。 |
env_variables
|
選用元素。您可以在
開頭為 os.environ 字典中找到這些變數:env_variables: DJANGO_SETTINGS_MODULE: "myapp.settings" |
error_handlers |
選用元素。用來設定自訂的錯誤頁面,讓系統能針對不同的錯誤類型傳回。 這個元素可包含下列元素:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
必要元素。會列出網址模式,以及這些網址模式的處理方式說明。App Engine 處理網址的方式有兩種,一種是執行應用程式的程式碼,另一種則是提供隨程式碼上傳的靜態檔案,例如圖片、CSS 或 JavaScript。 |
includes
|
選用元素。 includes: - lib/user_admin.yaml App Engine 會依照下列順序解析已納入的路徑:
如果
已納入的 |
inbound_services |
選用元素。應用程式必須先啟用這些服務,才能讓這些服務接收內送要求。您可以啟用 Python 2 應用程式的服務,方法是在 可用的內送服務如下: 示例:inbound_services: - mail - warmup |
instance_class |
選用元素。該服務的執行個體類別。 視您服務的資源調度方式而定,可用的值如下:
|
libraries |
選用元素。Python 2.7 執行階段包含幾個第三方程式庫。在這些程式庫中,有些程式庫是預設可使用的,但有些則需要經過設定才能使用。您可以藉由指定 這個欄位已在 Python 3 執行階段淘汰。 libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
請注意,如果您指定 如果您在開發的應用程式還沒有任何使用者,您就不需要追蹤新的版本。但請注意,如果應用程式的使用頻率很高,您可能會意外發現應用程式開始使用不具回溯相容性的新程式庫版本。 如需已納入的第三方程式庫清單,請參閱第三方程式庫。如要使用其他只採用 Python 的第三方程式庫,請將該程式庫安裝到本機目錄。 如果您正在使用彈性環境,請參閱在彈性環境中使用 Python 程式庫。 |
module |
注意:「模組」現在稱為「服務」。 如要透過 gcloud CLI 管理應用程式,請改用 service 元素。 |
runtime |
這是必要旗標,應用程式使用的執行階段環境名稱。例如,如要指定 Python 2.7,請使用: runtime: python27 |
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/ |
threadsafe |
必要元素。可設定讓應用程式使用並行要求。如果您使用 Python 的執行緒程式庫,系統會在每次處理要求之後清除由 這個欄位已在 Python 3 執行階段淘汰。 threadsafe: [true | false]
注意:Python 2.7 應用程式必須要使用 |
version |
我們建議您移除
如要進一步瞭解如何使用這個指令,請參閱「 部署應用程式」。 您部署到 App Engine 的應用程式程式碼的版本 ID。
版本 ID 可包含小寫字母、數字和連字號,但開頭不能是
注意:請在版本名稱的開頭使用字母,以便與永遠都以數字指定的執行個體有所區別。這樣一來,
每個應用程式版本都會保留自己的 |
vpc_access_connector |
選用元素。將您的應用程式設定為使用無伺服器的虛擬私人雲端存取連接器,讓該應用程式能夠將要求傳送至虛擬私人雲端網路中的內部資源。詳情請參閱「連線至虛擬私有雲網路」。
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
處理常式元素
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.app login: required secure: always redirect_http_response_code: 301
當使用者的要求遭到重新導向時,系統會將 HTTP 狀態碼設定為 |
script |
選用。 指定從應用程式根目錄到指令碼的路徑: handlers: # The root URL (/) is handled by the WSGI application named # "app" in home.py. No other URLs match this pattern. - url: / script: home.app # The URL /index.html is also handled by the home.py script. - url: /index\.html script: home.app # A regular expression can map parts of the URL to the # path of the script. - url: /browse/(books|videos|tools) script: \1.catalog.app # All other URLs use the WSGI application named in "app" # in not_found.py. - url: /.* script: not_found.app
附註:就跟 Python 在較新的 App Engine 執行階段中,這個欄位的行為已有所變更。 |
secure |
(非必要) 所有網址處理常式都可以使用 secure 設定,包括指令碼處理常式和靜態檔案處理常式。以下是 secure 可用的值:
handlers: - url: /youraccount/.* script: accounts.app login: required 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 |