您可以指定具有所需存取權的網路,控管執行作業的 VM 連線。舉例來說,您可以指定網路,允許工作存取必要資源,或限制存取權以提升安全性。或者,如果您沒有任何網路需求,也不想為工作設定網路,請略過指定網路的步驟,改為使用預設網路設定。
如要進一步瞭解網路概念和設定網路的時機,請參閱 Batch 網路總覽。
事前準備
- 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  如要取得建立工作所需的權限,以便在特定網路上執行工作,請要求管理員授予下列 IAM 角色: - 
  
  
    
      批次工作編輯者  (roles/batch.jobsEditor) 專案
- 
  
  
    
      服務帳戶使用者  (roles/iam.serviceAccountUser) 在作業的服務帳戶上,預設為預設 Compute Engine 服務帳戶
- 
            如要找出網路和子網路:
              
  
  
    
      專案的 Compute 網路檢視者  (roles/compute.networkViewer)
 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。 
- 
  
  
    
      批次工作編輯者  (
- 
找出要用於這項工作的網路。為工作指定的網路必須符合下列規定:- 網路是與作業位於相同專案中的虛擬私有雲 (VPC) 網路,或是由作業專案代管或與該專案共用的共用虛擬私有雲網路。
- 網路包含您要執行工作的地點中的子網路。
- 
  網路允許工作所需的存取權。舉例來說,如果您的工作需要在 VM 之間通訊 (例如使用 MPI 程式庫在緊密耦合的工作之間通訊的工作),請確保網路的防火牆規則允許工作 VM 之間的連線。
瞭解如何為常見用途設定虛擬私有雲防火牆規則。 
 
- 
如要讓作業在其他專案代管的共用虛擬私有雲網路子網路上執行,必須授予專案的 Batch 服務代理程式使用該子網路的權限。
  
  
  
  
  
  
  
    為確保專案的 Batch 服務代理程式具備必要權限,能建立在共用虛擬私有雲網路子網路上執行的工作,請要求管理員將共用虛擬私有雲子網路的 Compute Network User ( roles/compute.networkUser) IAM 角色授予專案的 Batch 服務代理程式。詳情請參閱為服務帳戶設定共用虛擬私有雲的說明文件。 
建立在特定網路上執行的工作
建立工作時,請指定工作使用的網路。 具體來說,您需要指定要執行這項工作的虛擬私有雲網路和子網路。
如要在建立這項工作時使用 VM 執行個體範本,請務必在 VM 執行個體範本中指定網路。否則,請按照下列步驟,使用 gcloud CLI 或 Batch API 為工作指定網路。
gcloud
如要使用 gcloud CLI 建立在特定網路上執行的工作,請選取下列其中一個選項:
使用 gcloud 標記指定工作網路
如要建立工作並使用 gcloud 旗標指定工作網路,請完成下列步驟:
- 建立 JSON 檔案,指定作業的設定詳細資料。 - 舉例來說,如要建立基本指令碼作業,請建立包含下列內容的 JSON 檔案。 - { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
- 使用 - gcloud batch jobs submit指令建立工作。 如要指定工作所屬的網路,請加入- --network和- --subnetwork標記。- gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE \ --network projects/HOST_PROJECT_ID/global/networks/NETWORK \ --subnetwork projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET- 更改下列內容: - JOB_NAME:這項工作的名稱。
- LOCATION:這項工作的地點。
- JSON_CONFIGURATION_FILE:JSON 檔案的路徑,內含作業的設定詳細資料。
- HOST_PROJECT_ID:您指定網路的專案 ID:- 如果您使用共用 VPC 網路,請指定主專案。
- 否則,請指定目前專案。
 
- :目前專案中的 VPC 網路名稱,或是由目前專案代管或與目前專案共用的共用 VPC 網路。NETWORK
- REGION:子網路和作業 VM 所在的區域:- 如果您加入allowedLocations欄位,指定工作 VM 的允許位置,則必須在此處指定相同區域。
- 否則,地區必須與您為工作選取的位置 (LOCATION) 相同。
 
- 如果您加入
- SUBNET:子網路的名稱,該子網路屬於虛擬私有雲網路,且與作業的 VM 位於相同區域。
 
使用 JSON 欄位指定作業的網路
如要建立工作,並使用 JSON 設定檔中的欄位指定工作網路,請完成下列步驟:
- 建立 JSON 檔案,指定作業的設定詳細資料。如要指定工作網路,請加入 - network和- subnetwork欄位。- 舉例來說,如要建立在特定網路上執行的基本指令碼工作,請建立含有下列內容的 JSON 檔案。 - { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ] }, "taskCount": 3 } ], "allocationPolicy": { "network": { "networkInterfaces": [ { "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET" } ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }- 更改下列內容: 
- 使用 - gcloud batch jobs submit指令建立工作。- gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE- 更改下列內容: - JOB_NAME:這項工作的名稱。
- LOCATION:這項工作的地點。
- JSON_CONFIGURATION_FILE:JSON 檔案的路徑,內含作業的設定詳細資料。
 
Java
Node.js
Python
API
如要使用 Batch API 建立工作,請使用 jobs.create 方法,並指定工作設定詳細資料。如要指定工作網路,請加入network 和 subnetwork 欄位。
舉例來說,如要建立在特定網路上執行的基本指令碼工作,請提出以下 POST 要求:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "network": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        }
      ]
    }
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}
更改下列內容:
- PROJECT_ID:專案的專案 ID。
- LOCATION:這份工作的地點。
- JOB_NAME:這項工作的名稱。
- HOST_PROJECT_ID:您指定網路的專案 ID:- 如果您使用共用 VPC 網路,請指定主專案。
- 否則,請指定目前專案 (PROJECT_ID)。
 
- :目前專案中的 VPC 網路名稱,或是由目前專案代管或與目前專案共用的共用 VPC 網路。NETWORK
- REGION:子網路和作業 VM 所在的區域:- 如果您加入allowedLocations欄位,指定工作 VM 的允許位置,則必須在此處指定相同區域。
- 否則,地區必須與您為工作選取的位置 (LOCATION) 相同。
 
- 如果您加入
- SUBNET:子網路的名稱,該子網路屬於虛擬私有雲網路,且與作業的 VM 位於相同區域。