將 App Engine 工作新增至 Cloud Tasks 佇列
Cloud Tasks 可將非同步工作分派至 App Engine 服務,處理背景工作負載。在本快速入門導覽課程中,您將使用 Cloud Tasks API 建立 App Engine 工作,並新增至 Cloud Tasks 佇列。
事前準備
-
安裝 Google Cloud CLI。
-
設定 gcloud CLI,使用您的聯合身分。
詳情請參閱「 使用聯合身分登入 gcloud CLI」。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為要建立的專案名稱。 Google Cloud -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
如尚未啟用,請啟用 Cloud Resource Manager 和 Cloud Tasks API:
啟用 API 所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果系統傳回驗證錯誤,請確認您已 使用聯合身分登入 gcloud CLI。
- 使用 App Engine 時,系統會自動建立
App Engine 預設服務帳戶。試用本快速入門指南時,可以使用這個服務帳戶。不過,根據機構政策設定,系統可能不會自動將專案的
Editor角色授予預設服務帳戶。如果是這種情況,您必須授予服務帳戶下列角色:- Artifact Registry 管理員 (
roles/artifactregistry.admin) - Artifact Registry 推送建立寫入者 (
roles/artifactregistry.createOnPushWriter) - Compute 管理員 (
roles/compute.admin) - 記錄寫入者 (
roles/logging.logWriter) - Storage 物件檢視者 (
roles/storage.objectViewer)
- Artifact Registry 管理員 (
新增 App Engine 應用程式
如要指定 App Engine 工作,且必須先將應用程式部署至 App Engine 標準環境,請先在專案中新增 App Engine 應用程式。
前往 Google Cloud 控制台的「App Engine」頁面。
在「Welcome to App Engine」(歡迎使用 App Engine) 對話方塊中,執行下列其中一項操作:
如果您已建立 App Engine 應用程式,且畫面顯示「已建立 App Engine 應用程式」訊息,即可略過本節的其餘步驟,並繼續進行「安裝及部署範例」一節的步驟。
或
如果您尚未建立 App Engine 應用程式,請按一下「Create application」(建立應用程式),然後繼續執行本節中的其餘步驟。
為應用程式選取區域,並記下所選區域。
請注意,在 Cloud Tasks 指令中,
europe-west和us-central分別稱為europe-west1和us-central1。請勿選取服務帳戶,系統會使用預設的 App Engine 服務帳戶。
點選「下一步」。
應用程式已設定並建立完成。這可能需要幾分鐘。
請勿下載 Cloud SDK,而是點選「稍後再執行」。
您應該會看到「已建立 App Engine 應用程式」訊息。
安裝及部署範例
本快速入門導覽課程使用的 Node.js 範例包含兩個檔案:createTask.js 會在本機以指令列工具的形式執行,用於建立工作並將工作新增至 Tasks 佇列;server.js 則會部署在 App Engine,做為處理工作的 worker 服務。
在終端機中,將範例應用程式存放區複製到本機電腦。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git前往包含程式碼範例的目錄。
cd nodejs-docs-samples/cloud-tasks/snippets使用 Node.js 套件管理工具安裝所有依附元件。
你可以使用 NPM:
npm install或者,您也可以使用 Yarn:
yarn install將 worker 服務 (
server.js) 部署至 App Engine 標準環境。gcloud app deploy app.yaml確認含有服務的應用程式正在執行。
gcloud app browse在瀏覽器中前往提供的連結。例如:
https://PROJECT_ID.uc.r.appspot.com/畫面上應會顯示
Hello, World!。
建立 Cloud Tasks 佇列
使用 gcloud tasks queues create 指令,在準備好的環境中建立佇列。
在終端機中,建立記錄所有作業的佇列。
gcloud tasks queues create QUEUE_NAME \ --log-sampling-ratio=1.0 \ --location=REGION更改下列內容:
QUEUE_NAME:Cloud Tasks 佇列的名稱REGION:部署應用程式的區域
等待佇列初始化,然後確認佇列是否已順利建立。
gcloud tasks queues describe QUEUE_NAME \ --location=REGION畫面會顯示如下的輸出內容:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
將任務新增至 Cloud Tasks 工作佇列
建立工作、將工作新增至您建立的佇列,然後將工作傳送至工作人員服務。
設定下列環境變數。用戶端會使用這項資訊建立要求。
export PROJECT_ID=PROJECT_ID export LOCATION_ID=REGION export QUEUE_ID=QUEUE_NAME建立酬載為
hello的工作,並將該工作新增至佇列。酬載可以是工作服務處理工作時需要的任何要求資料。node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello顯示工作人員服務的記錄,確認工作已執行。
gcloud app logs read記錄應如下所示:
2024-06-20 15:00:00 default[20240620t143852] "POST /log_payload HTTP/1.1" 200 2024-06-20 15:00:00 default[20240620t143852] App listening on port 8081 2024-06-20 15:00:00 default[20240620t143852] Press Ctrl+C to quit. 2024-06-20 15:00:00 default[20240620t143852] Received task with payload: hello
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。
刪除 Google Cloud 專案:
gcloud projects delete PROJECT_ID
或者,您也可以刪除建立的資源:
刪除 Cloud Tasks 工作佇列:
gcloud tasks queues delete QUEUE_NAME \ --location=REGION