升級至最新的 App Engine 彈性環境版本

本頁面旨在協助使用彈性環境且在 app.yaml 中使用 vm:true 設定的開發人員,瞭解如何調整應用程式相關配置以升級到新版本。

本頁面提供的方法不適用於從 App Engine 標準環境升級,相關資訊請參閱從標準環境將服務遷移到彈性環境

升級到彈性環境

從代管 VM 環境升級到彈性環境:

  1. app.yaml 設定檔中,將已淘汰的 vm: true 項目替換為 env: flex。範例:
    runtime: go
    env: flex
  2. 查看破壞性變更清單,以判斷 app.yaml 是否需進行額外變更。
  3. 在升級過程中,考慮是否要進行變更以使用新功能
  4. 完成必要變更後,將新版應用程式部署到 App Engine

    例如,從 app.yaml 檔案所在的應用程式根目錄中,執行下列指令:

    gcloud app deploy

共用核心機器類型

App Engine 彈性環境不支援共用核心機器類型,因為此類型擁有的 vCPU 不到 1 個。如果您使用共用核心機器,則移至 env:flex 時,您必須將機器升級到至少具有一個核心。或者,您也可以將應用程式移至 App Engine 標準環境。

暖機要求

App Engine 彈性環境不支援 /_ah/warmup 要求。

如要為應用程式暖機,請實作健康狀態檢查處理常式;此處理常式只有在應用程式暖機完畢後,才會傳回就緒狀態

舉例來說,您可以建立就緒狀態檢查,該檢查會在初始化快取後才傳回就緒狀態,因此應用程式在就緒前不會接收到流量。

靜態檔案

如果您是在 app.yamlhandlers: 區段中定義靜態檔案,則 App Engine 執行個體會直接提供這些靜態檔案,不會透過其他 App Engine 基礎架構提供。介面與行為是相同的,但 App Engine 執行個體在提供檔案時會佔用少量的 CPU 和其他資源。

隱藏資源

在彈性環境部署背景運作的基礎資源 (包含 Cloud Load Balancing、Compute Engine 執行個體,與代管的執行個體群組) 隱藏於 Google Cloud Platform 主控台,以針對 App Engine 應用程式及其執行個體,提供更完整的抽象層。您可在 GCP 主控台的執行個體頁面中,檢視和控制個別的執行個體。

您仍可透過 SSH 取消鎖定和連線至執行個體以進行除錯。請不要使用 gcloud compute instances 指令,改用 gcloud app instances。您也可以在 GCP 主控台的執行個體頁面中,啟動 SSH 連線。

破壞性變更

您必須對程式碼和設定檔進行一些變更,才能升級至 App Engine 彈性環境。本節說明在透過 env: flex 設定部署應用程式之前,您必須先處理的淘汰項目和破壞性變更。

資料庫淘汰項目

下列資料庫及其相關服務已在 2016 年 11 月 15 日淘汰,而且不受彈性環境支援:

app.yaml 變更

app.yaml 檔案中已淘汰的 vm:true 設定,替換為 env:flex 彈性環境設定。

驗證變更

您還需要更新 app.yaml 檔案,好移除或替換其他已淘汰的設定:

  • 安全處理常式
    在 App Engine 彈性環境中,handlerssecure 設定現已淘汰。如果您需要安全資料傳輸層 (SSL) 重新導向,可以更新應用程式的程式碼,並使用 X-Forwarded-Proto 標頭重新導向 http 流量。您也可以使用 HTTP 嚴格傳輸安全性回應標頭
  • 登入處理常式
    在 App Engine 彈性環境中,handlerslogin 設定現已淘汰。請按照 Users 服務遷移作業指南進行操作。

環境變數變更

下列環境變數已移除或重新命名,下方亦列出替代的環境變數 (如果有):

已淘汰的環境變數 新的環境變數 (如果有)
APPENGINE_LOADBALANCER
APPENGINE_LOADBALANCER_IP
GAE_AFFINITY
GAE_APPENGINE_HOSTNAME
GAE_MINOR_VERSION
GAE_LONG_APP_ID GOOGLE_CLOUD_PROJECT
GAE_MODULE_INSTANCE GAE_INSTANCE
GAE_MODULE_NAME GAE_SERVICE
GAE_MODULE_VERSION GAE_VERSION
GAE_PARTITION
GAE_VM
HOSTNAME
MEMCACHE_ENV_DEBIAN_FRONTEND
MEMCACHE_ENV_PORT
MEMCACHE_NAME
MEMCACHE_PORT
MEMCACHE_PORT_11211_TCP
MEMCACHE_PORT_11211_TCP_ADDR
MEMCACHE_PORT_11211_TCP_PORT
MEMCACHE_PORT_11211_TCP_PROTO
MODULE_YAML_PATH
SERVER_SOFTWARE
USE_MVM_AGENT

要求標頭變更

下列的 HTTP 要求標頭已變更:

  • 已從所有要求中移除:

    • X-GOOGLE-REAL-IP
    • X-APPENGINE-API-TICKET
    • X-APPENGINE-AUTH-DOMAIN
    • X-APPENGINE-DATACENTER
    • X-APPENGINE-DEFAULT-VERSION-HOSTNAME
    • X-APPENGINE-HTTPS
    • X-APPENGINE-REQUEST-ID-HASH
    • X-APPENGINE-REQUEST-LOG-ID
    • X-APPENGINE-USER-IS-ADMIN
    • X-APPENGINE-USER-IP
  • 目前已加入所有的要求:

    • X-FORWARDED-FOR
    • X-CLOUD-TRACE-CONTEXT
    • X-FORWARDED-PROTO

Memcache 服務

如要建構應用程式快取,請建立 Cloud Memorystore 執行個體,並利用無伺服器虛擬私人雲端存取將其連結至您的應用程式

工作佇列

如要在第一代標準環境之外使用推送工作佇列服務,建議您使用 Cloud Tasks API

以大多數您可能需要使用提取佇列的情況來說 (例如將個別作業會提取和處理的工作或訊息排入佇列),Cloud Pub/Sub 提供類似的功能與交付保證,因此是不錯的替代方案。

網址轉送變更

針對在彈性環境中執行的應用程式,您無法再將流量轉送至特定的執行個體。舉例來說,您無法將要求導向「instanceID」執行個體:

https://instanceID-dot-versionID-dot-serviceID-dot-app-id.appspot.com

升級時應考慮採用的新功能

請記下這些改善項目,您可以在升級應用程式時善加利用:

定價變更

App Engine 彈性環境版本推出全新的定價模式。目前使用 vm:true 的客戶可享有一年期的原始 Compute Engine 定價。如需查看彈性環境的全新價格資訊,請參閱使用彈性環境執行個體的費用

提示:彈性環境不支援支出上限,請考慮使用建立預算及設定快訊的功能。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Go 適用的 App Engine 彈性環境