Go 執行階段是一個軟體堆疊,負責安裝網路服務的程式碼和其依附元件,並執行服務。
適用於 App Engine 標準環境的 Go 執行階段會在 app.yaml 檔案中宣告:
runtime: goVERSION
其中 VERSION 是 Go MAJOR 和 MINOR 的版本號碼。舉例來說,如要使用最新 Go 版本 (Go 1.25),請指定 125。
如要瞭解其他支援的 Go 版本,以及 Go 版本對應的 Ubuntu 版本,請參閱執行階段支援時間表。
Go 版本
最新支援的 Go 版本為 1.25。Go 執行階段會使用 app.yaml 檔案中指定的最新穩定版本。App Engine 會自動更新至新的修補程式修訂版本,但不會自動更新主要版本。
舉例來說,您的應用程式在部署時可能採用了次要版本 Go 1.13.1,且在後續的部署作業中自動更新到版本 1.13.2,但它並不會自動更新到主要版本 Go 1.14。
依附元件
如需瞭解如何宣告及管理依附元件,請參閱指定相依元件。
環境變數
下列為執行階段設定的環境變數:
| 環境變數 | 說明 |
|---|---|
GAE_APPLICATION
|
App Engine 應用程式的 ID。 這個 ID 的前置字串為「region code~」,例如在歐洲部署的應用程式為「e~」。 |
GAE_DEPLOYMENT_ID |
目前部署的 ID。 |
GAE_ENV |
App Engine 環境。設為 standard。 |
GAE_INSTANCE |
服務目前正在執行的執行個體 ID。 |
GAE_MEMORY_MB |
應用程式程序可用的記憶體量,以 MB 為單位。 |
GAE_RUNTIME |
在 app.yaml 檔案中指定的執行階段。 |
GAE_SERVICE |
在 app.yaml 檔案中指定的服務名稱。如果未指定服務名稱,則會設為 default。 |
GAE_VERSION |
服務目前的版本標籤。 |
GOOGLE_CLOUD_PROJECT |
與應用程式相關聯的 Google Cloud 專案 ID。 |
PORT |
接受 HTTP 要求的通訊埠。 |
NODE_ENV (僅適用於 Node.js 執行階段) |
在部署服務時設定為 production。 |
您可以在 app.yaml 檔案中定義其他環境變數,但除了 NODE_ENV 以外,上述值都無法覆寫。
HTTPS 和轉送 Proxy
App Engine 會在負載平衡器上終止 HTTPS 連線,並將要求轉送至您的應用程式。部分應用程式需要判斷原始要求 IP 和通訊協定。使用者的 IP 位址會顯示在標準 X-Forwarded-For 標頭中。需要這項資訊的應用程式應將其網路架構設定為「信任 Proxy」。
檔案系統
執行階段包含可寫入的 /tmp 目錄,其他所有目錄都只有唯讀存取權。寫入 /tmp 會佔用系統記憶體。詳情請參閱 TempDir 和 TempFile 說明文件。
中繼資料伺服器
應用程式的每個執行個體都可以使用 App Engine 中繼資料伺服器來查詢與執行個體和專案相關的資訊。
您可以透過以下端點存取中繼資料伺服器:
http://metadatahttp://metadata.google.internal
傳送至中繼資料伺服器的要求必須包含要求標頭 Metadata-Flavor: Google。此標頭表示要求是為了擷取中繼資料值而傳送。
下表列出可讓您針對特定中繼資料發出 HTTP 要求的端點:
| 中繼資料端點 | 說明 |
|---|---|
/computeMetadata/v1/project/numeric-project-id |
指派給專案的專案編號。 |
/computeMetadata/v1/project/project-id |
指派給專案的專案 ID。 |
/computeMetadata/v1/instance/region |
執行個體執行的區域。 |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
指派給專案的預設服務帳戶電子郵件。 |
/computeMetadata/v1/instance/service-accounts/default/ |
列出專案的所有預設服務帳戶。 |
/computeMetadata/v1/instance/service-accounts/default/scopes |
列出預設服務帳戶的所有支援範圍。 |
/computeMetadata/v1/instance/service-accounts/default/token |
傳回可用來向其他 Google Cloud API 驗證應用程式的驗證憑證。 |
舉例來說,如要擷取專案 ID,請將要求傳送至 http://metadata.google.internal/computeMetadata/v1/project/project-id。