將 App Engine 工作新增至 Cloud Tasks 佇列
本快速入門導覽課程說明如何使用 Cloud Tasks API,將 App Engine 工作新增至 Cloud Tasks 佇列。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 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,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 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,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 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 應用程式,且系統顯示「Your App Engine application has been created」(已建立 App Engine 應用程式) 訊息,即可略過本節的其餘步驟,並繼續進行「安裝及部署範例」一節的步驟。
或
如果您尚未建立 App Engine 應用程式,請按一下「建立應用程式」,然後繼續完成本節的其餘步驟。
選取應用程式的區域,並記下該區域。
請注意,在 Cloud Tasks 指令中,
europe-west和us-central分別稱為europe-west1和us-central1。請勿選取服務帳戶,系統會使用預設的 App Engine 服務帳戶。
點選「下一步」。
應用程式已設定並建立完成。這可能需要幾分鐘的時間。
請勿下載 Cloud SDK,而是點選「I'll do this later」(稍後再執行)。
您應該會看到「已建立 App Engine 應用程式」訊息。
安裝及部署範例
本快速入門導覽課程使用的 Node.js 範例包含兩個檔案:createTask.js 會在本機執行,做為指令列工具,用於建立工作並新增至 Tasks 佇列;server.js 則會部署在 App Engine 上,做為工作站服務,用於處理工作。
在終端機中,將範例應用程式存放區複製到本機電腦。
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將工作站服務 (
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