將 App Engine 工作新增至 Cloud Tasks 佇列

本快速入門導覽課程說明如何使用 Cloud Tasks API,將 App Engine 工作新增至 Cloud Tasks 佇列。

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 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 專案名稱。

  6. 確認專案已啟用計費功能 Google Cloud

  7. 啟用 Cloud Resource Manager 和 Cloud Tasks API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. 如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:

    gcloud auth application-default login

    如果您使用 Cloud Shell,則不需要執行這項操作。

    如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI

  9. 安裝 Google Cloud CLI。

  10. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  11. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  12. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 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 專案名稱。

  13. 確認專案已啟用計費功能 Google Cloud

  14. 啟用 Cloud Resource Manager 和 Cloud Tasks API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. 如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:

    gcloud auth application-default login

    如果您使用 Cloud Shell,則不需要執行這項操作。

    如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI

  16. 使用 App Engine 時,系統會自動建立 App Engine 預設服務帳戶。試用本快速入門導覽課程時,可以使用這個服務帳戶。不過,根據機構政策設定,系統可能不會自動將專案的 Editor 角色授予預設服務帳戶。如果是這種情況,您必須授予服務帳戶下列角色:
    1. Artifact Registry 管理員 (roles/artifactregistry.admin)
    2. Artifact Registry 推送建立寫入者 (roles/artifactregistry.createOnPushWriter)
    3. Compute 管理員 (roles/compute.admin)
    4. 記錄寫入者 (roles/logging.logWriter)
    5. Storage 物件檢視者 (roles/storage.objectViewer)

新增 App Engine 應用程式

如果您要以 App Engine 工作為目標,且必須先將應用程式部署到 App Engine 標準環境,請先將 App Engine 應用程式新增至專案。

  1. 前往 Google Cloud 控制台的「App Engine」頁面。

    前往 App Engine

  2. 在「Welcome to App Engine」(歡迎使用 App Engine) 對話方塊中,執行下列其中一項操作:

    • 如果您已建立 App Engine 應用程式,且系統顯示「Your App Engine application has been created」(已建立 App Engine 應用程式) 訊息,即可略過本節的其餘步驟,並繼續進行「安裝及部署範例」一節的步驟。

    • 如果您尚未建立 App Engine 應用程式,請按一下「建立應用程式」,然後繼續完成本節的其餘步驟。

  3. 選取應用程式的區域,並記下該區域。

    請注意,在 Cloud Tasks 指令中,europe-westus-central 分別稱為 europe-west1us-central1

  4. 請勿選取服務帳戶,系統會使用預設的 App Engine 服務帳戶。

  5. 點選「下一步」

    應用程式已設定並建立完成。這可能需要幾分鐘的時間。

  6. 請勿下載 Cloud SDK,而是點選「I'll do this later」(稍後再執行)

    您應該會看到「已建立 App Engine 應用程式」訊息。

安裝及部署範例

本快速入門導覽課程使用的 Node.js 範例包含兩個檔案:createTask.js 會在本機執行,做為指令列工具,用於建立工作並新增至 Tasks 佇列;server.js 則會部署在 App Engine 上,做為工作站服務,用於處理工作。

  1. 在終端機中,將範例應用程式存放區複製到本機電腦。

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. 前往包含程式碼範例的目錄。

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. 使用 Node.js 套件管理工具安裝所有依附元件。

    你可以使用 NPM:

    npm install
    

    或者,您也可以使用 Yarn:

    yarn install
    
  4. 將工作站服務 (server.js) 部署到 App Engine 標準環境。

    gcloud app deploy app.yaml
    
  5. 確認包含該服務的應用程式運作正常。

    gcloud app browse
    
  6. 在瀏覽器中前往提供的連結。例如:

    https://PROJECT_ID.uc.r.appspot.com/
    

    畫面上應會顯示 Hello, World!

建立 Cloud Tasks 佇列

使用 gcloud tasks queues create 指令,在您準備的環境中建立佇列。

  1. 在終端機中,建立記錄所有作業的佇列。

    gcloud tasks queues create QUEUE_NAME \
        --log-sampling-ratio=1.0 \
        --location=REGION
    

    更改下列內容:

    • QUEUE_NAME:Cloud Tasks 佇列的名稱
    • REGION:部署應用程式的區域
  2. 等待佇列初始化完成,然後確認佇列已建立成功。

    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 佇列

建立工作,將工作新增到您建立的佇列,然後將工作遞送到工作站服務。

  1. 設定下列環境變數。用戶端會利用這項資訊建立要求。

    export PROJECT_ID=PROJECT_ID
    export LOCATION_ID=REGION
    export QUEUE_ID=QUEUE_NAME
    
  2. 建立酬載為 hello 的工作,並將工作新增到佇列中。酬載可以是要求中的任何資料,而工作站服務需要這些資料才能處理工作。

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. 顯示工作站服務的記錄,確認工作是否已執行。

    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

或者,您也可以刪除自己建立的資源:

  1. 刪除 Cloud Tasks 佇列:

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. 停用 App Engine 應用程式

後續步驟