將服務從標準環境遷移至彈性環境

App Engine 彈性環境不提供 App Engine SDK 中使用的 API 程式庫。如果您決定將應用程式從 App Engine 標準環境遷移至彈性環境,您必須更新程式碼,才能使用所有 Google Cloud Platform 環境中提供的服務和 API。

如需將特定服務和 API 從標準環境遷移至彈性環境的說明,請參閱以下各節的內容。

標準環境與彈性環境之間的差異

除了此處介紹的主要差異之外,從標準環境遷移至彈性環境時,您還應考量其他較細微的差異:

  • 彈性環境不會封鎖含有 /_ah/ 的路徑,如果標準環境中的應用程式透過含有 /_ah/ 的路徑存取特定服務,請參閱下列相關服務的說明。

  • 只有 App Engine 標準環境支援支出上限功能。在彈性環境中,請考慮建立預算和設定警示

應用程式識別

在彈性環境中執行應用程式時,您可以併用環境變數Google Compute Engine 中繼資料服務,以取得應用程式的相關資訊:

應用程式資訊 存取方式
應用程式 / 專案 ID GOOGLE_CLOUD_PROJECT 環境變數或中繼資料伺服器中的 /project/project-id 資源
預設主機名稱 App Engine Admin API apps.get 方法
服務帳戶名稱 中繼資料伺服器中的 /instance/service-accounts 資源
OAuth 2.0 存取憑證 中繼資料伺服器中的 /instances/service-accounts 資源。請參閱 Compute Engine 的使用服務帳戶憑證進行驗證說明文件

以下為無法直接使用的功能:

  • 專案沒有預設的 Cloud Storage 值區。如要在應用程式中使用值區,請先建立一個 Cloud Storage 值區,並使用專案 ID 做為值區名稱,然後在應用程式中使用 GOOGLE_CLOUD_PROJECT 環境變數做為值區名稱。
  • 您無法使用預設服務帳戶來簽署 blob。您可以改為使用 Google Identity and Access Management (IAM) API,或在部署時提供服務帳戶私密金鑰給應用程式,以解決這個問題。
  • 同樣地,沒有內建 API 可供用於存取驗證簽名所需的公開憑證。每個服務帳戶的公開憑證都存放在 https://www.googleapis.com/robot/v1/metadata/x509/{service account email} 供您取用。

背景執行緒

由於彈性環境沒有沙箱限制,因此您可以將執行緒或程序任意建立於要求環境之外。您通常只需使用語言內建的執行緒或多重處理工具,不需要任何其他工具。

Blobstore

標準與彈性環境中的 Blobstore 服務用途大多已由 Cloud Storage 取代,您可以使用 Google Cloud 用戶端程式庫來儲存和擷取 Cloud Storage 中的資料。

詳情請參閱下列指南:

Capabilities

標準環境之外沒有類似於 Capabilities 服務的功能。

Websocket

App Engine 彈性環境支援 websocket。如需詳細資訊,請參閱下列指南:

Cloud Datastore

只要使用 Cloud Datastore API,您就可以透過任何服務存取 Cloud Datastore,也可以使用 Google Cloud 用戶端程式庫來儲存及擷取 Cloud Datastore 中的資料。

無論您是使用 App Engine 程式庫、Google Cloud 用戶端程式庫,還是直接呼叫 API,可使用的 Cloud Datastore 資料都是相同的。

只在標準環境中支援 ndb 程式庫。python-ndb 程式庫目前仍在開發中,開發完成後將可支援 Python 3 和其他平台,包括彈性環境。

詳情請參閱下列指南:

圖片

Images 服務只在標準環境中提供,但是,您可以直接從應用程式或 Cloud Storage 輕鬆提供圖片功能。

如果需要進行圖片處理作業,您可以安裝及使用任何圖片處理程式庫,例如 Pillow

圖片服務也可透過使用服務網址來處理圖片大小調整作業,藉此提供可避免對應用程式發出動態要求的功能。如果想要類似的功能,您可以提前產生重新調整大小的圖片,並將其上傳至 Cloud Storage 以提供使用。或者,您也可以使用第三方內容傳遞聯播網 (CDN) 服務來調整圖片大小。

如需更多資源,請參閱下列指南:

記錄

與標準環境類似,記錄服務在彈性環境中也屬於自動處理的作業,只是收集記錄的格式有所不同。記錄不會與要求綑綁在一起,且 stdoutstderr 的記錄會分開收集。

如要進一步控管應用程式的記錄功能、將記錄檔加以分類,並且記錄其他中繼資料,您可以直接將 Stackdriver Logging API 與 Google Cloud 用戶端程式庫搭配使用。

如需更多詳細資訊,請參閱下列指南:

郵件

App Engine Mail 服務只在標準環境中提供,您需要使用 SendGridMailgunMailjet 等第三方電子郵件服務供應商來傳送電子郵件。這些服務都有提供 API,可讓您從在任何位置執行的應用程式傳送電子郵件。

下列指南說明如何在彈性環境中使用這些服務:

Memcache

App Engine 彈性環境目前尚未提供 Memcache 服務,Alpha 版的 Memcache 服務將在近期內推出。如果您想在服務推出時收到通知,請填寫搶先體驗表

如需立即使用 Memcache 服務,請使用 Redis Labs 提供的第三方 Memcache 服務。如要使用此服務,請參閱透過 Redis Labs Memcache 快取應用程式資料一文。

您也可以使用第三方全代管服務 Redis Labs Redis Cloud。如要使用此服務,請參閱透過 Redis Labs Redis 快取應用程式資料

模組

Modules API 只在標準環境中提供,但您可以併用環境變數App Engine Admin API,以取得應用程式的相關資訊,並修改應用程式的執行服務:

服務資訊 存取方式
目前的服務名稱 GAE_SERVICE 環境變數
目前的服務版本 GAE_VERSION 環境變數
目前的執行個體 ID GAE_INSTANCE 環境變數
預設主機名稱 App Engine Admin API apps.get 方法
服務清單 App Engine Admin API apps.services.list 方法
服務的版本清單 App Engine Admin API apps.services.versions.list 方法
服務的預設版本,包含所有的流量分割 App Engine Admin API apps.services.get 方法
版本的執行中執行個體清單 App Engine Admin API apps.services.versions.instances.list 方法

您還可以使用 App Engine Admin API 來部署管理應用程式中的服務和版本。

命名空間

除了標準環境之外,只有 Cloud Datastore 能夠直接支援多租戶架構。在其他服務中,您需要手動處理多租戶架構。若需將服務的執行個體完全隔離,您可以透過 Cloud Resource Manager API 以程式輔助的方式建立新專案,並且跨專案存取資源。

OAuth

彈性環境不提供 OAuth 服務。如果您需要驗證 OAuth 2.0 憑證,可以利用 OAuth 2.0 APIoauth2.tokeninfo 方法。

遠端

Remote API 服務不適用於彈性環境,大多數可以在彈性環境中存取的後端支援服務 (如 Cloud Datastore),都能從任意位置存取。

Search 服務目前只在標準環境中提供,您可以在 Google Compute Engine 上託管任何純文字搜尋資料庫 (例如 ElasticSearch),並且從標準和彈性環境存取該資料庫。

通訊端

彈性環境沒有沙箱限制,因此您可以照常開啟及使用傳出通訊端。

工作佇列

如要在第一代標準環境以外的環境中使用推送工作佇列服務,請使用 Cloud Tasks

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

網址擷取

彈性環境不提供網址擷取服務,但由於沒有沙箱限制,因此應用程式可以使用任何 HTTP 程式庫來取得網址擷取功能。建議您使用要求

使用者

Users 服務只在標準環境中提供,您可以在彈性環境中使用任何以 HTTP 為基礎的驗證機制,例如:

請注意,由於未提供 Users 服務,因此無法使用 app.yaml 將網址設定為僅可由管理員存取。您必須在應用程式中處理這個邏輯。

相關資源

如要瞭解彈性環境與標準環境之間的主要差異,以及同時使用這兩種環境的應用程式指南,請參閱 App Engine 標準環境使用者適用的 App Engine 彈性環境一文。

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

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

這個網頁
Python 適用的 App Engine 彈性環境文件