您可以指定具有所需存取權的網路,控管執行作業的 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 網路。
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:- 如果您使用共用虛擬私有雲網路,請指定主專案。
- 否則,請指定目前專案 (
PROJECT_ID
)。
- :目前專案中的 VPC 網路名稱,或是由目前專案代管或與目前專案共用的共用 VPC 網路。
NETWORK
REGION
:子網路和作業 VM 所在的區域:- 如果您加入
allowedLocations
欄位,指定工作 VM 的允許位置,則必須在此處指定相同區域。 - 否則,地區必須與您為工作選取的位置 (
LOCATION
) 相同。
- 如果您加入
SUBNET
:子網路的名稱,該子網路屬於虛擬私有雲網路,且與作業的 VM 位於相同區域。