本文說明如何使用標籤整理 Batch 資源。
標籤是套用至資源的鍵/值組合,用於分組及說明資源。Batch 具有預先定義的標籤 (會自動套用至資源),以及自訂標籤 (您可以在建立工作時定義及套用)。
標籤可讓您篩選資源清單和 Cloud Billing 報表的結果。舉例來說,你可以使用標籤執行下列操作:
- 釐清及整理專案的工作清單。 
- 使用標籤描述指定容器或指令碼的類型,藉此區分工作中的可執行項目。 
- 篩選 Batch 或特定工作建立的資源,藉此分析費用。 
如要進一步瞭解標籤,請參閱 Compute Engine 標籤說明文件。
事前準備
- 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  如要取得建立作業所需的權限,請要求管理員授予下列 IAM 角色: - 
  
  
    
      批次工作編輯者  (roles/batch.jobsEditor) 專案
- 
  
  
    
      服務帳戶使用者  (roles/iam.serviceAccountUser) 在作業的服務帳戶上,預設為預設 Compute Engine 服務帳戶
 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。 
- 
  
  
    
      批次工作編輯者  (
限制
除了 Compute Engine 說明文件中指定的標籤規定外,將標籤套用至 Batch 工作及其資源時,也須遵守下列限制:
- Batch 僅支援使用 Batch 建立的資源標籤,且資源類型須為下列類型: - 工作 
- 可執行檔 
- 作業的圖形處理器 (GPU) (如有) 
- 作業的虛擬機器 (VM) 執行個體 
 
- 考量 Batch 自動套用至工作的預先定義標籤後,您可以定義下列自訂標籤數量: - 您最多可定義 63 個自訂標籤,並套用至工作和可執行檔。 
- 您最多可定義 61 個自訂標籤,並套用至為工作建立的每個 GPU、永久磁碟和 VM。 
 
- 批次作業僅支援定義名稱不重複的自訂標籤。 這會產生下列結果: - 嘗試覆寫預先定義的標籤會導致錯誤。 
- 定義重複的自訂標籤會覆寫現有的自訂標籤。 
 
- Batch 僅支援在建立工作時定義標籤。 - 您無法新增、更新或移除工作和可執行檔的標籤。 
- 雖然可以使用 Compute Engine 為作業建立的永久磁碟和 VM 新增、更新或移除標籤,但不建議這麼做。無法可靠地估算工作資源的存續時間範圍,且任何變更可能無法在 Batch 中正常運作。 
 
- 如要使用標籤篩選工作清單,請使用 gcloud CLI 或 Batch API 查看工作清單。 
預先定義的標籤
每個預先定義的標籤都有以 batch- 字首開頭的鍵。根據預設,Batch 會自動套用下列預先定義的標籤:
- 為您建立的每個工作: - batch-job-id:這個標籤的值會設為工作名稱。
 
- 針對為工作建立的每個 GPU、永久磁碟和 VM: - batch-job-id:這個標籤的值會設為工作名稱。
- batch-job-uid:這個標籤的值會設為工作的專屬 ID (UID)。
- batch-node:這個標籤的值為空值,僅用於將為工作建立的所有 GPU、永久磁碟和 VM 分組。舉例來說,您可以在查看 Cloud Billing 報表時使用這個標籤,找出 Batch 建立的所有 GPU、永久磁碟和 VM 費用。
 
定義自訂標籤
建立工作時,您可以選擇定義一或多個自訂標籤。您可以透過新金鑰或專案已使用的金鑰定義自訂標籤。如要定義自訂標籤,請根據標籤用途,選取本文中的一或多種方法:
- 
本節說明如何將一或多個自訂標籤套用至工作,以及為工作建立的每個 GPU、永久磁碟和 VM。建立工作後,您可以使用這些標籤篩選 Cloud 帳單報表,以及專案的工作、永久磁碟和 VM 清單。 
- 
本節說明如何將一或多個自訂標籤套用至工作。建立工作後,您可以使用這些標籤篩選專案的工作清單。 
- 
本節說明如何將一或多個自訂標籤套用至工作的一或多個可執行檔。建立工作後,您可以使用這些標籤篩選專案的工作清單。 
為工作及其資源定義自訂標籤
系統會將在工作分配政策的 labels 欄位中定義的標籤套用至工作,以及每個 GPU (如有)、永久磁碟 (所有開機磁碟和任何新的儲存空間磁碟區),以及為工作建立的 VM。
使用 gcloud CLI 或 Batch API 建立工作時,您可以為工作及其資源定義標籤。
gcloud
舉例來說,如要在 us-central1 中建立基本容器工作,並定義兩個適用於工作和為工作建立的資源的自訂標籤,請按照下列步驟操作:
- 建立 JSON 檔案,指定作業的設定詳細資料和 - allocationPolicy.labels欄位。- { "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }- 更改下列內容: - VM_LABEL_NAME1:要套用至為工作建立的 VM 的第一個標籤名稱。
- VM_LABEL_VALUE1:要套用至為工作建立的 VM 的第一個標籤值。
- VM_LABEL_NAME2:要套用至作業所建立 VM 的第二個標籤名稱。
- VM_LABEL_VALUE2:要套用至為工作建立的 VM 的第二個標籤值。
 
- 使用 - gcloud batch jobs submit指令在- us-central1中建立工作。- gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1- 將 - JSON_CONFIGURATION_FILE替換為 JSON 檔案的路徑,內含您在上一個步驟中建立的工作設定詳細資料。
API
舉例來說,如要在 us-central1 中建立基本容器工作,並定義兩個適用於工作和為工作建立的資源的自訂標籤,請向 jobs.create 方法發出 POST 要求,並指定 allocationPolicy.labels 欄位。
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
  "allocationPolicy": {
    "instances": [
      {
        "policy": {
          "machineType": "e2-standard-4"
        }
      }
    ],
    "labels": {
      "VM_LABEL_NAME1": "VM_LABEL_VALUE1",
      "VM_LABEL_NAME2": "VM_LABEL_VALUE2"
    }
  },
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "container": {
              "imageUri": "gcr.io/google-containers/busybox",
              "entrypoint": "/bin/sh",
              "commands": [
                "-c",
                "echo Hello world!"
              ]
            }
          }
        ]
      }
    }
  ]
}
更改下列內容:
- VM_LABEL_NAME1:要套用至為工作建立的 VM 的第一個標籤名稱。
- VM_LABEL_VALUE1:要套用至為工作建立的 VM 的第一個標籤值。
- VM_LABEL_NAME2:要套用至為工作建立的 VM 的第二個標籤名稱。
- VM_LABEL_VALUE2:要套用至為工作建立的 VM 的第二個標籤值。
Java
Node.js
Python
定義工作的自訂標籤
在labels工作欄位中定義的標籤只會套用至該工作。
使用 gcloud CLI 或 Batch API 建立工作時,可以定義工作的標籤。
gcloud
舉例來說,如要在 us-central1 中建立基本容器工作,定義套用至工作本身的兩個自訂標籤,請按照下列步驟操作:
- 建立 JSON 檔案,指定作業的設定詳細資料和 - labels欄位。- { "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }- 更改下列內容: - JOB_LABEL_NAME1:要套用至工作的第一個標籤名稱。
- JOB_LABEL_VALUE1:要套用至工作的第一個標籤值。
- JOB_LABEL_NAME2:要套用至工作的第二個標籤名稱。
- JOB_LABEL_VALUE2:要套用至工作的第二個標籤值。
 
- 在 - us-central1中使用- gcloud batch jobs submit指令建立工作,並加上下列旗標:- gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1- 將 - JSON_CONFIGURATION_FILE替換為 JSON 檔案的路徑,內含您在上一個步驟中建立的工作設定詳細資料。
API
舉例來說,如要在 us-central1 中建立容器工作,並定義要套用至工作本身的兩個自訂標籤,請對 jobs.create 方法發出 POST 要求,然後指定 labels 欄位。
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "container": {
              "imageUri": "gcr.io/google-containers/busybox",
              "entrypoint": "/bin/sh",
              "commands": [
                "-c",
                "echo Hello World!"
              ]
            }
          }
        ]
      }
    }
  ],
  "labels": {
    "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
    "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
  }
}
更改下列內容:
- JOB_LABEL_NAME1:要套用至工作的第一個標籤名稱。
- JOB_LABEL_VALUE1:要套用至工作的第一個標籤值。
- JOB_LABEL_NAME2:要套用至工作的第二個標籤名稱。
- JOB_LABEL_VALUE2:要套用至工作的第二個標籤值。
Java
Node.js
Python
為可執行檔定義自訂標籤
在可執行的 labels 欄位中定義的標籤
只會套用至該可執行檔。
使用 gcloud CLI 或 Batch API 建立工作時,您可以為一或多個可執行檔定義標籤。
gcloud
舉例來說,如要在 us-central1 中建立工作,並為兩個工作可執行項目各定義一個自訂標籤,請按照下列步驟操作:
- 建立 JSON 檔案,指定工作的設定詳細資料和 - runnables.labels欄位。- { "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }- 更改下列內容: - RUNNABLE1_LABEL_NAME1:要套用至工作第一個可執行項目的標籤名稱。
- RUNNABLE1_LABEL_VALUE1:要套用至工作第一個可執行項目的標籤值。
- RUNNABLE2_LABEL_NAME1:要套用至工作第二個可執行項目的標籤名稱。
- RUNNABLE2_LABEL_VALUE1:要套用至工作第二個可執行項目的標籤值。
 
- 使用 - gcloud batch jobs submit指令在- us-central1中建立工作。- gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1- 將 - JSON_CONFIGURATION_FILE替換為 JSON 檔案的路徑,內含您在上一個步驟中建立的工作設定詳細資料。
API
舉例來說,如要在 us-central1 中建立工作,並為兩個工作可執行項目各定義一個自訂標籤,請對 jobs.create 方法發出 POST 要求,並指定 runnables.labels 欄位。
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "container": {
              "imageUri": "gcr.io/google-containers/busybox",
              "entrypoint": "/bin/sh",
              "commands": [
                "-c",
                "echo Hello from ${BATCH_TASK_INDEX}!"
              ]
            },
            "labels": {
              "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
            }
          },
          {
            "script": {
              "text": "echo Hello from ${BATCH_TASK_INDEX}!"
            },
            "labels": {
              "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
            }
          }
        ]
      }
    }
  ]
}
更改下列內容:
- RUNNABLE1_LABEL_NAME1:要套用至第一個工作可執行檔的標籤名稱。
- RUNNABLE1_LABEL_VALUE1:要套用至第一個工作可執行檔的標籤值。
- RUNNABLE2_LABEL_NAME1:要套用至第二項工作可執行檔的標籤名稱。
- RUNNABLE2_LABEL_VALUE1:要套用至第二個工作可執行檔的標籤值。
Java
Node.js
Python
後續步驟
- 在下列情況下,標籤可做為篩選器: 
- 瞭解如何刪除工作。