區域 ID
REGION_ID
是 Google 根據您在建立應用程式時選取的地區所指派的簡寫代碼。雖然某些區域 ID 可能看起來與常用的國家/地區代碼相似,但此代碼並非對應國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r
。如果是在此日期之前建立的現有應用程式,網址中則可選擇加入地區 ID。
進一步瞭解區域 ID。
本頁面說明使用者發出的 HTTP 要求如何送達適當的服務版本。要求可以透過下列方式轉送:
如果您使用本機開發伺服器來測試應用程式,則可用的轉送和分派功能會略有不同。如要透過程式輔助的方式來建立正式作業環境和開發伺服器都能使用的網址,請使用 get_hostname 方法。
詳情請參閱在開發伺服器中轉送。
使用網址轉送
應用程式在 App Engine 中執行後,您可以使用下列網址將 HTTP 要求傳送至應用程式:
https://PROJECT_ID.REGION_ID.r.appspot.com
其中 PROJECT_ID
是包含應用程式的 Google Cloud 專案 ID。
這個網址會將要求傳送至您設定用來接收流量的應用程式版本。
服務和版本的網址
如果您在應用程式中建立多項服務,每項服務都有自己的網址。每個服務版本都有自己的網址,因此您可以先部署及測試新版本,再將該版本設定為接收流量。
特定服務和版本的網址格式如下:
VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
如果您不需要指定特定版本,可以省略 VERSION-dot-
。
如要擷取應用程式服務和版本的 ID,您可以使用下列任一工具:
控制台
在 Google Cloud 控制台中,您可以查看對應的「Instances」(執行個體)、「Services」(服務) 和「Versions」(版本) 頁面。
gcloud
執行 gcloud app instances list
指令,即可列出特定 Google Cloud 專案中的資源 ID。
API
如要透過程式擷取資源 ID,請參閱 Admin API 中的 list
方法。
網址範例
以下是一些 App Engine 網址範例,其中顯示 App Engine 指派給應用程式的 appspot.com
網域,以及您可以為應用程式設定的自訂網域。
- 將要求傳送至
default
服務的可用執行個體: https://PROJECT_ID.REGION_ID.r.appspot.com
https://CUSTOM_DOMAIN
要求會由
default
服務中設定用來處理流量的版本接收。- 將要求傳送至
- 將要求傳送至特定服務的可用執行個體:
https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
https://SERVICE_ID.CUSTOM_DOMAIN
要求會由指定服務中設定要用來處理流量的版本接收。如果您指定的服務不存在,則系統會以軟轉送的方式處理這些要求。
- 將要求傳送至
default
中特定版本的可用執行個體:https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
https://VERSION_ID.CUSTOM_DOMAIN
如果沒有指定服務,要求會傳送至
default
服務。
軟轉送
如果要求與主機名稱的 PROJECT_ID.REGION_ID.r.appspot.com
部分相符,但含有不存在的服務、版本或執行個體名稱,則要求會轉送至 default
服務。軟轉送不適用於自訂網域;如果主機名稱無效,則傳送至這些網域的要求將傳回 HTTP 404
狀態碼。
指定的轉送
如果目標確實存在,採用下列網址模式可保證將要求送達要求目標。您在分派檔案中定義的模式絕不會攔截和重新轉送這些要求:
- 將要求傳送到特定服務和版本的可用執行個體:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
https://VERSION_ID.SERVICE_ID.PROJECT_ID.CUSTOM_DOMAIN
如果您使用手動調整資源配置的服務,則可以加入執行個體 ID 來指定執行個體並傳送要求。執行個體 ID 為
0
到運作中執行個體總數之間的整數,可以按照下列方式指定:將要求傳送至特定執行個體中的特定服務和版本:
https://INSTANCE_ID-dot-VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com https://INSTANCE_ID.VERSION_ID.SERVICE_ID.CUSTOM_DOMAIN
使用分派檔案設定轉送
您可以建立分派檔案來覆寫 App Engine 的網址轉送規則,並定義自己的自訂轉送規則。分派檔案可以讓您根據要求網址中的路徑或主機名稱,將傳入要求傳送至特定服務。
建立分派檔案
如何建立分派檔案:
在專案目錄的根目錄,或
default
服務的根目錄中,建立名為dispatch.yaml
的檔案。請在檔案中定義轉送規則,如需詳細資訊,請參閱
dispatch.yaml
參考資料。
請注意下列轉送規則:
- 您最多可以定義 20 個轉送規則。每個規則都必須包含
url
和service
元素。 - 規則必須使用 HTTP 網址模式;這類模式包含分隔子網域的「
.
」標記法。系統不支援使用 HTTPS「-dot-
」標記法定義的網址。 - 規則也適用於您在 Cron 檔案中定義的網址。
舉例來說,您可以建立分派檔案,藉此將行動要求 (例如 https://simple-sample.uc.r.appspot.com/mobile/
) 轉送至行動裝置前端,並將工作站要求 (例如 https://simple-sample.uc.r.appspot.com/work/
) 轉送至靜態後端:
dispatch:
# Send all mobile traffic to the mobile frontend.
- url: "*/mobile/*"
service: mobile-frontend
# Send all work to the one static backend.
- url: "*/work/*"
service: static-backend
部署分派檔案
如要部署調度檔案,請執行下列指令:
gcloud app deploy dispatch.yaml
使用 Cloud Load Balancing 進行路由
Cloud Load Balancing 是獨立產品,可為在 Google Cloud上執行的所有應用程式啟用進階網路設定。
為無伺服器應用程式啟用 HTTP(S) 負載平衡後,您可以:
設定無伺服器應用程式,以不與其他服務共用的專屬 IPv4 和/或 IPv6 IP 位址提供服務。
重複使用您在 Compute Engine、Google Kubernetes Engine 和 Cloud Storage 中使用的 SSL 憑證和私密金鑰。這樣一來,您就無需管理無伺服器應用程式的個別憑證。
負載平衡器不會干擾或與 dispatch.yaml
檔案中的路由規則互動。只有在無伺服器 NEG 將流量導向 App Engine 時,系統才會評估 dispatch.yaml
規則。
注意事項:
- 建議您使用入口控管機制,讓應用程式只接收來自負載平衡器 (以及您使用的 VPC,如果有) 的要求。否則,使用者可以使用應用程式的 App Engine 網址,略過負載平衡器、Google Cloud Armor 安全政策、SSL 憑證和透過負載平衡器傳遞的私密金鑰。
在開發伺服器中轉送
探索執行個體位址
本機開發伺服器會在啟動時建立所有手動調整資源配置的執行個體,並對自動調整和基本資源配置服務的執行個體採取動態管理。伺服器會為各項服務指派通訊埠,用戶端則能使用伺服器自動平衡負載及選取執行個體。為各項服務定址的通訊埠指派工作會顯示在伺服器記錄檔訊息串中。以下是定義三種服務的應用程式使用的通訊埠 (與每項服務的資源調度類型無關):
INFO Starting module "default" running at: http://localhost:8084
INFO Starting module "service1" running at: http://localhost:8082
INFO Starting module "service2" running at: http://localhost:8083
當您使用服務的位址 (例如 http://localhost:8082/
) 時,伺服器會選取 (或建立) 服務的執行個體,並將要求傳送至該執行個體。
伺服器會為服務的各個執行個體指派專屬的通訊埠,如要探索這些通訊埠,您必須使用管理伺服器。管理伺服器有一個不重複的通訊埠,這個通訊埠記載於訊息記錄中:
INFO Starting admin server at: http://localhost:8000
這個位址會將您帶往管理伺服器主控台。您可以在主控台中按一下 [Instances] (執行個體),查看應用程式執行個體的動態狀態:
每個手動和基本執行個體會以不同的項目顯示。執行個體編號是一種連結,可連至每個執行個體的不重複通訊埠位址。您可以將游標懸停在連結上,查看指派給這個執行個體的通訊埠,或按一下連結,將要求直接傳送給這個執行個體。
分派檔案
如果您的應用程式含有dispatch.yaml
檔案,記錄檔訊息串中就會顯示分派器通訊埠:
INFO Starting dispatcher running at: http://localhost:8080
系統會依據分派檔案中的規則,轉送傳送至這個通訊埠的要求。伺服器不支援含有主機名稱 (例如 url: "customer1.myapp.com/*"
) 的 dispatch.yaml
檔案規則。具有相對路徑模式 (url: "*/fun"
) 的規則可正常運作,因此您可以使用類似 http://localhost/fun/mobile
的網址來連線至執行個體。如果您嘗試使用含有主機規則的 dispatch.yaml
檔案啟動應用程式,伺服器將在記錄檔串中回報錯誤。
限制服務的存取權
所有服務均預設為公開。如要限制服務的存取權,請在其處理常式中加入 login: admin
元素。
關於 App Engine 網址的其他詳細資料
瞭解網址中的區域 ID
REGION_ID
是 Google 根據您在建立應用程式時選取的地區所指派的簡寫代碼。雖然某些區域 ID 可能看起來與常用的國家/地區代碼相似,但此代碼並非對應國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r
。如果是在此日期之前建立的現有應用程式,網址中則可選擇加入地區 ID。
您可以使用下列工具查看應用程式的區域 ID:
控制台
在 Google Cloud 控制台中,您可以查看應用程式的「Instances」(執行個體)、「Services」(服務) 和「Versions」(版本) 的網址。
所有這些網址都包含區域 ID。
gcloud
部署應用程式或服務時,部署成功後 gcloud app deploy
指令會顯示網址。這個網址包含區域 ID。
如要查看已部署服務的網址,請按照下列步驟操作:
輸入
gcloud app versions list
指令,即可列出特定服務的版本。例如,如要列出預設服務的版本,請輸入gcloud app versions list --service=default
。輸入
gcloud app versions describe
指令。該指令的輸出內容包含版本網址,以及應用程式的區域 ID。舉例來說,如要說明預設服務的 20191023t101741 版本,請輸入gcloud app versions describe 20191023t101741 --service=default
要求資料中包含網域名稱
用於要求的網域名稱會包含在傳送至應用程式的要求資料中。因此,您可以使用要求資料來控制應用程式如何根據要求中的網域名稱做出回應。舉例來說,如果您想要重新導向到官方網域,可以撰寫應用程式的程式碼來檢查 Host
要求標頭,然後根據網域名稱提供適當的回應。