本教學課程說明如何在 Cloud Run 上處理工作階段。
許多應用程式需要處理工作階段以進行驗證和使用者偏好設定。Jetty 架構隨附以記憶體為基礎的實作,以執行此函式。但是,此實作並不適合可從多個執行個體提供的應用程式,因為記錄在一個執行個體中的工作階段可能與其他執行個體不同。本教學課程說明如何在 Cloud Run 上處理工作階段。
目標
- 編寫應用程式。
- 在本機執行應用程式。
- 在 Cloud Run 上部署應用程式。
費用
在本文件中,您會使用下列 Cloud de Confiance by S3NS的計費元件:
完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」。
事前準備
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
前往 Cloud de Confiance 控制台,並在 Cloud Shell 中開啟應用程式。
Cloud Shell 可讓您直接在瀏覽器中使用指令列工具存取雲端資源。在瀏覽器中開啟 Cloud Shell,然後按一下「繼續」,將程式碼範例和變更下載到應用程式目錄中。
-
在 Cloud Shell 中,將 gcloud CLI 設為使用新的 Cloud de Confiance 專案:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
-
更新 Maven,預設使用 Java 11:
出現提示時,請輸入數字來選取 Java 11。記下該版本列出的路徑。sudo update-alternatives --config java
- 將上一個步驟複製的路徑匯出為環境變數:
export JAVA_HOME=java-11-path
網頁應用程式
這個應用程式為每個使用者顯示不同語言的問候語。系統一律會用與上次相同的語言問候回訪者。
您必須先將目前使用者的相關資訊儲存在工作階段中,應用程式才能儲存使用者的偏好設定。這個範例應用程式使用 WebFilter 擷取及更新 Firestore 中的工作階段資料。
下圖說明 Firestore 如何處理 Cloud Run 應用程式的工作階段。
HttpServletRequest 會使用 Cookie 儲存本機工作階段的專屬 ID,該 ID 對應於 Firestore 中包含工作階段詳細資料的文件。
刪除工作階段
Firestore 不會刪除舊的或過期的工作階段。您可以刪除 Cloud de Confiance 控制台中的工作階段資料,或是實作自動化的刪除策略。如果您使用 Memcache 或 Redis 這類工作階段儲存解決方案,則會自動刪除過期的工作階段。
在本機環境中執行
啟動 HTTP 伺服器:
mvn jetty:run在網路瀏覽器中查看應用程式:
Cloud Shell
在 Cloud Shell 工具列中,按一下 [Web preview] (網頁預覽)
,然後選取 [Preview on port 8080] (透過以下通訊埠預覽:8080)。本機電腦
透過瀏覽器前往以下網址:
http://localhost:8080您會看到以下五個問候語其中之一:「Hello World」、「Hallo Welt」、「Hola mundo」、「Salut le Monde」或「Ciao Mondo」。如果您在其他瀏覽器或無痕模式下開啟頁面,語言就會變更。您可以在Cloud de Confiance 控制台中查看和編輯工作階段資料。

如要停止 HTTP 伺服器,請在您的終端機視窗中,按下
Control+C。
在 Cloud Run 上部署及執行
您可以使用 Cloud Run 建構及部署應用程式,即使是處在高負載和大量資料的情況下,應用程式仍會穩定可靠地執行。
在終端機視窗中,使用 Jib Maven 外掛程式,將程式碼的映像檔建構及部署至 Google Container Registry (GCR)。
mvn clean package jib:build
將應用程式部署至 Cloud Run:
gcloud beta run deploy session-handling --image gcr.io/MY_PROJECT/session-handling
--platform managed --region us-central1 --memory 512M將
MY_PROJECT替換為您建立的Cloud de Confiance 專案 ID。前往這個指令傳回的網址,即可查看網頁載入期間的工作階段資料保留情形。
應用程式偵錯
如果無法連線至 Cloud Run 應用程式,請檢查下列事項:
- 檢查
gcloud部署指令是否順利完成,且未輸出任何錯誤。如果發生錯誤 (例如message=Build failed),請修正錯誤,並再次嘗試部署 Cloud Run 應用程式。 前往 Cloud de Confiance 控制台的「Logs Explorer」頁面。
在「Recently selected resources」(最近選取的資源) 下拉式清單中,按一下「Cloud Run Application」(Cloud Run 應用程式),然後按一下「All module_id」(所有 module_id)。 系統隨即會顯示您造訪應用程式時的要求清單。如果您沒看見要求清單,請確認您已從下拉式清單中選取「All module_id」。如果在Cloud de Confiance 控制台中看到錯誤訊息,請檢查應用程式的程式碼是否與「編寫網頁應用程式」一節中的程式碼相符。
確認已啟用 Firestore API。
清除所用資源
刪除專案
- 前往 Cloud de Confiance 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
刪除 Cloud Run 執行個體
從 Cloud Run 刪除服務。
- 前往 Cloud de Confiance 控制台的 Cloud Run「服務」頁面。
- 選取要刪除的服務。
- 按一下「刪除」delete 刪除服務。
後續步驟
- 試試其他 Cloud Run functions 教學課程。
- 嘗試 Cloud Run ,可讓您在全代管的環境中或在您自己的 Google Kubernetes Engine 叢集中,執行無狀態容器。