建立 Cloud Tasks 工作

您可以使用 Cloud Tasks 建立非同步工作項目,也就是工作。本文說明如何建立 HTTP 目標工作和 App Engine 工作。

HTTP 目標工作是轉送至工作站的要求,工作站位於任何具備外部 IP 位址的通用 HTTP 端點,例如 Cloud Run、Google Kubernetes Engine、Compute Engine 或地端部署的網路伺服器。

如果是 App Engine 目標,Cloud Tasks 會將工作要求轉送至 App Engine 內的處理常式。所有以 App Engine 處理常式為目標的佇列都必須有 App Engine 應用程式。處理常式必須在 App Engine 應用程式執行的區域中執行。這個區域也會做為 Cloud Tasks 要求的 REGION 參數。

您可以透過下列方式建立 HTTP 目標工作:

  • 在 Google Cloud 控制台
  • 在終端機或 Cloud Shell 中使用 Google Cloud CLI
  • 直接傳送要求至 Cloud Tasks API

如要瞭解如何透過程式將 HTTP 目標工作新增至 Cloud Tasks 佇列,請參閱「透過程式建立 HTTP 目標工作」。

您可以透過下列方式建立 App Engine 工作:

  • 在終端機或 Cloud Shell 中使用 Google Cloud CLI
  • 直接傳送要求至 Cloud Tasks API

如要瞭解如何透過程式將 App Engine 工作新增至 Cloud Tasks 佇列,請參閱「透過程式建立 App Engine 工作」。

事前準備

請確認您已建立 Cloud Tasks 佇列。詳情請參閱「建立 Cloud Tasks 佇列」。

建立 HTTP 目標工作

建立工作時,您可以指定工作名稱。如果名稱與現有工作或最近刪除/完成的工作相同,呼叫就會失敗。如果未指定工作名稱,系統會產生隨機的專屬工作 ID。

由於識別重複工作名稱需要額外查詢費用,因此使用使用者指定 ID 建立的工作會大幅增加延遲時間。建議您使用雜湊字串做為工作 ID 或工作 ID 的前置字串。詳情請參閱「工作重複資料刪除」。

控制台

  1. 在 Google Cloud 控制台中,依序前往「Cloud Tasks」>「Queues」(佇列) 頁面。

    前往「佇列」

  2. 按一下要新增工作的佇列名稱。

  3. 按一下 「Create HTTP task」(建立 HTTP 工作)

  4. (選用) 指定「工作名稱」

  5. 在「URL」(網址) 部分,指定要求傳送至的完整名稱網址。路徑開頭必須為 http://https://,例如:https://www.example.com

  6. 您可以視需要指定要求要使用的 HTTP 方法。預設值為 POST

  7. (選用) 在「Request body」(要求內文) 中,提供要傳送給處理工作的執行單元 HTTP 內文資料。

  8. 如要指定一或多個 HTTP 要求標頭,請按一下 「新增標頭」

  9. 針對「Auth header」(驗證標頭),選取下列其中一個授權選項,指定執行工作時,如何驗證傳送至目標的要求:

    • :沒有標頭,適用於未經授權的公開端點
    • 新增 OAuth 權杖:通常用於 *.googleapis.com 上託管的 Google API
    • 新增 OIDC 權杖:用於 Google Cloud 和第三方端點呼叫,但 *.googleapis.com 上託管的 Google API 除外
  10. 如適用,請在「服務帳戶」中提供服務帳戶電子郵件地址,用於產生授權權杖,並在執行工作時將權杖納入傳送至目標的請求。服務帳戶必須與佇列位於相同專案。呼叫者必須擁有服務帳戶的 iam.serviceAccounts.actAs 權限。

  11. 視情況指定「目標對象」,限制授權權杖的動作類型或收件者。

  12. 點選「建立」

工作應會列在「佇列詳細資料」頁面。

gcloud

如要建立 HTTP 目標工作並新增至現有佇列,請使用 gcloud tasks create-http-task 指令。

gcloud tasks create-http-task \
    --queue=QUEUE_ID \
    --url=URL \
    --location=REGION \
    --project=PROJECT_ID \
    --oidc-service-account-email=SERVICE_ACCOUNT_EMAIL

更改下列內容:

  • QUEUE_ID:要將工作加入的佇列名稱。
  • URL:要求將傳送至的完整網址。路徑開頭必須為 http://https://,例如:https://www.example.com

  • REGION:選用。佇列部署的區域,例如 us-central1

  • PROJECT_ID:選用。要建立工作的Google Cloud 專案的專案 ID。

  • SERVICE_ACCOUNT_EMAIL:選用。用於產生授權權杖的服務帳戶電子郵件地址。執行工作時,系統會將權杖納入傳送至目標的要求中。服務帳戶必須與佇列位於相同專案。呼叫者必須擁有服務帳戶的 iam.serviceAccounts.actAs 權限。

    如要產生 OAuth2 存取權杖,而非 OpenID Connect 權杖,請將 --oidc-service-account-email 旗標替換為 --oauth-service-account-email,指定服務帳戶電子郵件。

建立工作後,您應該會看到確認訊息,其中包含所建工作的完整資源名稱。

REST

如要建立 HTTP 目標工作並新增至現有佇列,請使用 projects.locations.queues.tasks.create 方法。

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:必填。要建立工作的 Google Cloud 專案的專案 ID。
  • REGION:必填。佇列部署的區域,例如 us-central1
  • QUEUE_ID:必填。要將工作加入的佇列 ID。
  • URL:必填。要求傳送至的完整網址。這個字串的開頭必須是 http://https://,例如:https://www.example.com
  • SERVICE_ACCOUNT_EMAIL: 選用。用於產生授權權杖的服務帳戶電子郵件地址,該權杖會在執行工作時,一併傳送至目標。服務帳戶必須與佇列位於相同專案。呼叫者必須擁有服務帳戶的 iam.serviceAccounts.actAs 權限。

    如要產生 OAuth2 存取權杖,而非 OpenID Connect 權杖,請將 oidcToken 欄位替換為 oauthToken,指定服務帳戶電子郵件地址。

  • SCHEDULE_TIME:選用。 預計嘗試執行工作時間,採用 RFC 3339 格式,例如 2026-10-02T15:01:23Z。如果未設定時間或設定的時間早於目前時間,Cloud Tasks 會將時間設為目前時間。

JSON 要求內文:

{
  "task": {
    "httpRequest": {
      "url": "URL",
      "httpMethod": "POST",
      "oidcToken": {
        "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
      }
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

請展開以下其中一個選項,以傳送要求:

如果成功,回應主體會包含新建立的 Task 資源例項。

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "httpRequest": {
    "url": "URL",
    "httpMethod": "POST",
    "headers": {
      "User-Agent": "Google-Cloud-Tasks"
    },
    "oidcToken": {
      "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
      "audience": "URL"
    }
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

建立 App Engine 工作

建立工作時,您可以指定工作名稱。如果名稱與現有工作或最近刪除/完成的工作相同,呼叫就會失敗。如果未指定工作名稱,系統會產生隨機的專屬工作 ID。

由於識別重複工作名稱需要額外查詢費用,因此使用使用者指定 ID 建立的工作會大幅增加延遲時間。建議您使用雜湊字串做為工作 ID 或工作 ID 的前置字串。詳情請參閱「工作重複資料刪除」。

gcloud

如要建立 App Engine 工作並將工作新增到現有佇列,請使用 gcloud tasks create-app-engine-task 指令。

gcloud tasks create-app-engine-task \
    --queue=QUEUE_ID \
    --relative-uri=RELATIVE_URI \
    --location=REGION \
    --project=PROJECT_ID \
    --routing=KEY:VALUE

更改下列內容:

  • QUEUE_ID:要將工作加入的佇列名稱。
  • RELATIVE_URI:要求的相對 URI。路徑開頭必須為正斜線 (/)。如未指定,系統會使用根路徑 (/)。
  • REGION:選用。佇列部署的區域。如未指定,系統會使用目前專案的 App Engine 應用程式位置。
  • PROJECT_ID:選用。要建立工作的Google Cloud 專案的專案 ID。
  • KEYVALUE:選用。用於這項工作的路線,其中 KEY 至少是下列其中一項:serviceversioninstance。任何缺少的鍵都會使用預設路徑。

建立工作後,您應該會看到確認訊息,其中包含所建工作的完整資源名稱。

REST

如要建立 App Engine 工作並新增至現有佇列,請使用 projects.locations.queues.tasks.create 方法。

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:必填。要建立工作的 Google Cloud 專案的專案 ID。
  • REGION:必填。佇列部署的區域
  • QUEUE_ID:必填。要將工作加入的佇列 ID。
  • RELATIVE_URI:必填。要求的相對 URI。路徑開頭必須為正斜線 (/)。如未指定,系統會使用根路徑 (/)。
  • SERVICE:選用。負責處理工作的 App Engine 服務。根據預設,工作會傳送至預設服務。
  • VERSION:選用。處理工作的 App Engine 版本。根據預設,系統會在嘗試執行工作時,將工作傳送至預設版本。
  • SCHEDULE_TIME:選用。 預計嘗試執行工作時間,採用 RFC 3339 格式,例如 2026-10-02T15:01:23Z。如果未設定時間或設定的時間早於目前時間,Cloud Tasks 會將時間設為目前時間。

JSON 要求內文:

{
  "task": {
    "appEngineHttpRequest": {
      "httpMethod": "POST",
      "relativeUri": "RELATIVE_URI",
      "appEngineRouting": {
        "service": "SERVICE",
        "version": "VERSION"
      }
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

請展開以下其中一個選項,以傳送要求:

如果成功,回應主體會包含新建立的 Task 資源例項。

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "appEngineHttpRequest": {
    "httpMethod": "POST",
    "relativeUri": "RELATIVE_URI",
    "appEngineRouting": {
      "service": "SERVICE",
      "version": "VERSION",
      "host": "VERSION.SERVICE.PROJECT_ID.appspot.com"
    }
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

建立批次工作

您可以建立一批目標工作,並使用 projects.locations.queues.tasks.batchCreate 方法建立要求清單,將這批工作加入現有佇列。

注意事項:

  • 所有工作都必須加入同一個佇列。

  • 單一批次可建立的任務數量有限。詳情請參閱「配額與限制」。

  • 批次要求會將個別作業匯總為單一要求,但並非不可分割,因為批次中可能有些作業會失敗,有些則會成功。

  • 你也可以一次刪除多項工作。詳情請參閱「從佇列中刪除批次工作」。

HTTP 工作

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:必填。要在其中建立工作的 Google Cloud 專案的專案 ID。
  • REGION:必填。佇列部署的區域,例如 us-central1
  • QUEUE_ID:必填。要將工作加入的佇列 ID。
  • URL:必填。要求傳送至的完整網址。這個字串的開頭必須是 http://https://,例如:https://www.example.com
  • SERVICE_ACCOUNT_EMAIL: 選用。用於產生授權權杖的服務帳戶電子郵件地址,該權杖會在執行工作時,一併傳送至目標。服務帳戶必須與佇列位於相同專案。呼叫者必須擁有服務帳戶的 iam.serviceAccounts.actAs 權限。

    如要產生 OAuth2 存取權杖,而非 OpenID Connect 權杖,請將 oidcToken 欄位替換為 oauthToken,指定服務帳戶電子郵件地址。

要求主體包含要求清單。

JSON 要求內文:

{
  "requests": [
    {
      "task": {
        "httpRequest": {
          "url": "URL",
          "httpMethod": "POST",
          "oidcToken": {
            "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
          }
        },
        "scheduleTime": "SCHEDULE_TIME"
      }
    }
  ]
}

請展開以下其中一個選項,以傳送要求:

如果成功,回應主體會包含 Operation 資源的例項。

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.tasks.v2beta3.BatchCreateTasksMetadata"
  },
  "done": false
}

App Engine 工作

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:必填。要建立工作的 Google Cloud 專案的專案 ID。
  • REGION:必填。佇列部署的區域
  • QUEUE_ID:必填。要新增工作的佇列 ID。
  • RELATIVE_URI:必填。要求的相對 URI。路徑開頭必須為正斜線 (/)。如未指定,系統會使用根路徑 (/)。
  • SERVICE:選用。負責處理工作的 App Engine 服務。根據預設,工作會傳送至預設服務。
  • VERSION:選用。處理工作的 App Engine 版本。根據預設,系統會在嘗試執行工作時,將工作傳送至預設版本。
  • SCHEDULE_TIME:選用。 預計嘗試執行工作時間,採用 RFC 3339 格式,例如 2026-10-02T15:01:23Z。如果未設定時間或設定的時間早於目前時間,Cloud Tasks 會將時間設為目前時間。

要求主體包含要求清單。

JSON 要求內文:

{
  "requests": [
    {
      "task": {
        "appEngineHttpRequest": {
          "httpMethod": "POST",
          "relativeUri": "RELATIVE_URI",
          "appEngineRouting": {
            "service": "SERVICE",
            "version": "VERSION"
          }
        },
        "scheduleTime": "SCHEDULE_TIME"
      }
    }
  ]
}

請展開以下其中一個選項,以傳送要求:

如果成功,回應主體會包含 Operation 資源的例項。

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.tasks.v2beta3.BatchCreateTasksMetadata"
  },
  "done": false
}

後續步驟