如要建立大量相同且彼此獨立的虛擬機器 (VM) 執行個體,請使用 Google Cloud CLI 或 Compute Engine API 批次建立 VM。您可以在區域中的所有可用區建立這些 VM,也可以將其分散到特定可用區。
如要瞭解詳情和相關限制,請參閱「關於大量建立 VM」。如要建立附加 GPU 的執行個體,請參閱「大量建立 GPU VM」。
事前準備
- 如要建立 VM 和任何相關資源,請確認您有足夠的配額和必要權限。
- 
  
  如果尚未設定驗證,請先完成設定。
  驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
  
    
      Select the tab for how you plan to use the samples on this page: gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI: gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 
- Set a default region and zone.
 REST如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI: gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。 必要的角色如要取得大量建立 VM 所需的權限,請要求管理員為您授予專案的 Compute 執行個體管理員 (v1) ( roles/compute.instanceAdmin.v1) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備大量建立 VM 所需的權限。如要查看確切的必要權限,請展開「必要權限」部分: 所需權限如要大量建立 VM,必須具備下列權限: - 
                  專案的 compute.instances.create
- 
                如要使用自訂映像檔建立 VM:
                  compute.images.useReadOnly在映像檔上
- 
                如要使用快照建立 VM:
                  compute.snapshots.useReadOnly快照
- 
                如要使用執行個體範本建立 VM,請按照下列步驟操作:
                  compute.instanceTemplates.useReadOnly在執行個體範本上
- 
                如要為 VM 指定子網路,請在專案或所選子網路上授予 compute.subnetworks.use權限。
- 
                如要為 VM 指定靜態 IP 位址:
                  專案的 compute.addresses.use
- 
                使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM:
                  compute.subnetworks.useExternalIp專案或所選子網路的權限
- 
                如要將舊版網路指派給 VM,請按照下列步驟操作:
                  compute.networks.use專案
- 
                使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定 compute.networks.useExternalIp。
- 
                如要為 VM 設定 VM 執行個體中繼資料,請在專案中執行下列指令:
                  compute.instances.setMetadata
- 
                如要為 VM 設定標記,請按照下列步驟操作:
                  compute.instances.setTags在 VM 上
- 
                如要為 VM 設定標籤,請按照下列步驟操作:
                  compute.instances.setLabels在 VM 上
- 
                如要設定 VM 使用的服務帳戶:
                  compute.instances.setServiceAccount在 VM 上
- 
                為 VM 建立新磁碟:
                  compute.disks.create專案
- 
                如要以唯讀或讀寫模式附加現有磁碟:
                  磁碟的 compute.disks.use
- 
                如要以唯讀模式連接現有磁碟:
                  compute.disks.useReadOnly磁碟的權限
 在區域中大量建立 VM如要在區域中大量建立 VM,請使用 gcloud CLI 或 Compute Engine API。 如果您指定機器類型或額外硬體 (例如 GPU 或本機 SSD) 的支援,Compute Engine 會將 VM 放置在區域內支援機器類型和額外硬體的區域中。 gcloud如要在區域中大量建立 VM,請使用下列 gcloud compute instances bulk create指令:gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]更改下列內容: - NAME_PATTERN:VM 的名稱模式。使用一連串的雜湊 ( - #) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,如果名稱模式為- vm-#,就會產生- vm-1和- vm-2等名稱的 VM,最多可達- --count指定的 VM 數量,但不得超過名稱模式允許的 VM 數量。- 使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。 
- PREDEFINED_NAMES:要建立的 VM 預先定義名稱清單。如果使用這個旗標並指定 - COUNT,- COUNT必須等於提供的名稱數量。
- REGION:要在其中建立 VM 的區域。 
- COUNT:要建立的 VM 數量。這個值必須小於或等於 - NAME_PATTERN允許的 VM 數量。或者,如果使用- --predefined-names,則不必指定- COUNT,但如果指定,則必須等於提供的名稱數量。
- MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為: - 值 - 說明 - 未設定 - 預設值為 - COUNT。如果 Compute Engine 無法建立- COUNT指定數量的 VM,要求就會失敗,且不會建立任何 VM。- 1- Compute Engine 會盡可能建立 VM,最多 - COUNT個。- 大於 - 1且小於- COUNT- Compute Engine 會建立至少 - MIN_COUNT個 VM,最多- COUNT個 VM。如果無法建立- MIN_COUNTVM,要求就會失敗,且不會建立任何 VM。
- LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為 - allow(預設值) 和- deny。以下是這個標記的範例值:- --location-policy=us-east1-b=allow,us-east1-c=deny 
- TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分配情形。使用 - --location-policy標記指定區域。下表列出這個旗標的有效值:- 值 - 說明 - ANY_SINGLE_ZONE- 強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 - BALANCED- 嘗試在區域內的所有可用區平均分配 VM。 - ANY- 允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量使用未使用的區域預留項目。 
 REST如要在某個區域中大量建立 VM,請使用下列 instances.bulkInsert方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }更改下列內容: - PROJECT_ID:專案 ID。 
- REGION:要在其中建立 VM 的區域。 
- NAME_PATTERN:VM 的名稱模式。指定這個或 - perInstanceProperties。使用一連串的雜湊 (- #) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,使用- vm-#做為名稱模式會產生- vm-1和- vm-2等名稱的 VM,最多可達- --count指定的 VM 數量,且該數量必須小於或等於名稱模式允許的 VM 數量。- 使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。 
- PREDEFINED_NAME_1、PREDEFINED_NAME_2 等:要建立的 VM 預先定義名稱清單。指定這個或 - namePattern。如果使用這個標記並指定- COUNT,- COUNT必須等於提供的名稱數量。
- COUNT:要建立的 VM 數量。這個值必須小於或等於 - NAME_PATTERN允許的 VM 數量。或者,如果使用- perInstanceProperties,則不必指定- COUNT,但如果指定,則必須等於提供的名稱數量。
- MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為: - 值 - 說明 - 未設定 - 預設值為 - COUNT。如果 Compute Engine 無法建立- COUNT指定數量的 VM,要求就會失敗,且不會建立任何 VM。- 1- Compute Engine 會盡可能建立 VM,最多 - COUNT個。- 大於 - 1且小於- COUNT- Compute Engine 會建立至少 - MIN_COUNT個 VM,最多- COUNT個 VM。如果無法建立- MIN_COUNTVM,要求就會失敗,且不會建立任何 VM。
- LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為 - ALLOW(預設值) 和- DENY。以下是這個欄位的範例值:- "locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
- TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分布情形。使用 - locationPolicy欄位指定區域。下表列出這個欄位的有效值:- 值 - 說明 - ANY_SINGLE_ZONE- 強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 - BALANCED- 嘗試在區域內的所有可用區平均分配 VM。 - ANY- 允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量使用未使用的區域預留項目。 
 在可用區中大量建立 VM如要在可用區中大量建立 VM,請使用 gcloud CLI 或 Compute Engine API。 gcloud如要在特定可用區中大量建立 VM,請使用下列 gcloud compute instances bulk create指令。gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]更改下列內容: - NAME_PATTERN:VM 的名稱模式。使用一連串的雜湊 ( - #) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,如果名稱模式為- vm-#,就會產生- vm-1和- vm-2等名稱的 VM,最多可達- --count指定的 VM 數量,但不得超過名稱模式允許的 VM 數量。- 使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。 
- PREDEFINED_NAMES:要建立的 VM 預先定義名稱清單。如果使用這個旗標並指定 - COUNT,- COUNT必須等於提供的名稱數量。
- ZONE:要在其中建立 VM 的可用區。 
- COUNT:要建立的 VM 數量。這個值必須小於或等於 - NAME_PATTERN允許的 VM 數量。或者,如果使用- --predefined-names,則不必指定- COUNT,但如果指定,則必須等於提供的名稱數量。
- MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為: - 值 - 說明 - 未設定 - 預設值為 - COUNT。如果 Compute Engine 無法建立- COUNT指定數量的 VM,要求就會失敗,且不會建立任何 VM。- 1- Compute Engine 會盡可能建立 VM,最多 - COUNT個。- 大於 - 1且小於- COUNT- Compute Engine 會建立至少 - MIN_COUNT個 VM,最多- COUNT個 VM。如果無法建立- MIN_COUNTVM,要求就會失敗,且不會建立任何 VM。
 REST如要在可用區中大量建立 VM,請使用下列 instances.bulkInsert方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }更改下列內容: - PROJECT_ID:專案 ID。 
- ZONE:要在其中建立 VM 的可用區。 
- NAME_PATTERN:VM 的名稱模式。指定這個或 - perInstanceProperties。使用一連串的雜湊 (- #) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,使用- vm-#做為名稱模式會產生- vm-1和- vm-2等名稱的 VM,最多可達- --count指定的 VM 數量,且該數量必須小於或等於名稱模式允許的 VM 數量。- 使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。 
- PREDEFINED_NAME_1、PREDEFINED_NAME_2 等:要建立的 VM 預先定義名稱清單。指定這個或 - namePattern。如果使用這個標記並指定- COUNT,- COUNT必須等於提供的名稱數量。
- COUNT:要建立的 VM 數量。這個值必須小於或等於 - NAME_PATTERN允許的 VM 數量。或者,如果使用- perInstanceProperties,則不必指定- COUNT,但如果指定,則必須等於提供的名稱數量。
- MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為: - 值 - 說明 - 未設定 - 預設值為 - COUNT。如果 Compute Engine 無法建立- COUNT指定數量的 VM,要求就會失敗,且不會建立任何 VM。- 1- Compute Engine 會盡可能建立 VM,最多 - COUNT個。- 大於 - 1且小於- COUNT- Compute Engine 會建立至少 - MIN_COUNT個 VM,最多- COUNT個 VM。如果無法建立- MIN_COUNTVM,要求就會失敗,且不會建立任何 VM。
 大量建立具有自訂主機名稱的 VM您可以使用 gcloud CLI 或 Compute Engine API,在區域或可用區中大量建立具有自訂主機名稱的 VM。 您必須針對自訂主機名稱手動設定 DNS 記錄。詳情請參閱「限制」一節。 如果您未指定主機名稱,Compute Engine 會將 VM 的主機名稱設為下列其中一項: - VM_NAME.c.PROJECT_ID.internal啟用全域 DNS 時
- VM_NAME.ZONE.c.PROJECT_ID.internal啟用區域性 DNS 時
 詳情請參閱內部 DNS 名稱。 gcloud如要在特定地區中,使用自訂主機名稱大量建立 VM,請使用下列 gcloud beta compute instances bulk create指令。gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]更改下列內容: - NAME_PATTERN:VM 的名稱模式。使用一連串的雜湊 ( - #) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,如果名稱模式為- vm-#,就會產生- vm-1和- vm-2等名稱的 VM,最多可達- --count指定的 VM 數量,但不得超過名稱模式允許的 VM 數量。- 使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。 
- PREDEFINED_NAMES:要建立的 VM 預先定義名稱清單。如果使用這個旗標並指定 - COUNT,- COUNT必須等於提供的名稱數量。
- [VM_NAME=HOSTNAME, ...]: VM 的預先定義名稱和要指派給 VM 的完整網域主機名稱的鍵值組清單。自訂主機名稱必須符合 RFC 1035 的規定,才算是有效主機名稱。 
- REGION:要在其中建立 VM 的可用區。 
- COUNT:要建立的 VM 數量。這個值必須小於或等於 - NAME_PATTERN允許的 VM 數量。或者,如果使用- --predefined-names,則不必指定- COUNT,但如果指定,則必須等於提供的名稱數量。
- MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為: - 值 - 說明 - 未設定 - 預設值為 - COUNT。如果 Compute Engine 無法建立- COUNT指定數量的 VM,要求就會失敗,且不會建立任何 VM。- 1- Compute Engine 會盡可能建立 VM,最多 - COUNT個。- 大於 - 1且小於- COUNT- Compute Engine 會建立至少 - MIN_COUNT個 VM,最多- COUNT個 VM。如果無法建立- MIN_COUNTVM,要求就會失敗,且不會建立任何 VM。
- LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為 - ALLOW(預設值) 和- DENY。以下是這個欄位的範例值:- "locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
- TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分布情形。使用 - locationPolicy欄位指定區域。下表列出這個欄位的有效值:- 值 - 說明 - ANY_SINGLE_ZONE- 強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 - BALANCED- 嘗試在區域內的所有可用區平均分配 VM。 - ANY- 允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量使用未使用的區域預留項目。 
 REST如要在特定區域中大量建立具有自訂主機名稱的 VM,請使用下列 instances.bulkInsert方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }更改下列內容: - PROJECT_ID:專案 ID。 
- REGION:要在其中建立 VM 的區域。 
- NAME_PATTERN:VM 的名稱模式。指定這個或 - perInstanceProperties。使用一連串的雜湊 (- #) 字元,讓 Compute Engine 替換成一連串的數字。舉例來說,使用- vm-#做為名稱模式會產生- vm-1和- vm-2等名稱的 VM,最多可達- --count指定的 VM 數量,且該數量必須小於或等於名稱模式允許的 VM 數量。- 使用名稱模式時,Compute Engine 會檢查先前要求建立的現有 VM 名稱,盡量避免名稱衝突。 
- PREDEFINED_NAME_1、PREDEFINED_NAME_2 等:要建立的 VM 預先定義名稱清單。指定這個或 - namePattern。如果使用這個標記並指定- COUNT,- COUNT必須等於提供的名稱數量。
- HOSTNAME_1、HOSTNAME_2 等:要為 VM 指派的完整網域主機名稱。自訂主機名稱必須符合 RFC 1035 的規定,才算是有效主機名稱。 - 舉例來說,如要建立兩個 VM - vm-1和- vm-2,並分別使用- my-host1234.example.com和- test.example.com做為自訂主機名稱,請在- perInstanceProperties中指定- hostname屬性,如下所示:- { ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ...} },
- COUNT:要建立的 VM 數量。這個值必須小於或等於 - NAME_PATTERN允許的 VM 數量。或者,如果使用- perInstanceProperties,則不必指定- COUNT,但如果指定,則必須等於提供的名稱數量。
- MIN_COUNT:要建立的 VM 數量下限。下表說明如何根據您設定這個標記的方式,決定要求的行為: - 值 - 說明 - 未設定 - 預設值為 - COUNT。如果 Compute Engine 無法建立- COUNT指定數量的 VM,要求就會失敗,且不會建立任何 VM。- 1- Compute Engine 會盡可能建立 VM,最多 - COUNT個。- 大於 - 1且小於- COUNT- Compute Engine 會建立至少 - MIN_COUNT個 VM,最多- COUNT個 VM。如果無法建立- MIN_COUNTVM,要求就會失敗,且不會建立任何 VM。
- LOCATION_POLICY:要在區域內納入或排除的可用區。使用鍵/值組合清單,其中區域為鍵,政策為值。這項政策的有效值為 - ALLOW(預設值) 和- DENY。以下是這個欄位的範例值:- "locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
- TARGET_DISTRIBUTION_SHAPE:VM 在指定可用區的分布情形。使用 - locationPolicy欄位指定區域。下表列出這個欄位的有效值:- 值 - 說明 - ANY_SINGLE_ZONE- 強制將 VM 放置在單一可用區,並優先使用未使用的預留項目。這項功能可避免跨區域網路輸出,或縮短網路延遲時間。這是預設值。 - BALANCED- 嘗試在區域內的所有可用區平均分配 VM。 - ANY- 允許在區域中的多個可用區之間分配 VM。 選擇有可用資源的區域,並盡量使用未使用的區域預留項目。 
 查看大量建立 VM 要求狀態建立變動要求時,Compute Engine 會傳回 operation資源,您可以輪詢該資源來取得作業狀態。詳情請參閱「處理 API 回應」。如要取得大量插入要求狀態,請將 HTTP GET要求傳送至operation資源:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID 如要取得區域大量插入要求的狀態,請傳送下列要求: GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID 更改下列內容: - PROJECT_ID:您要在其中建立 VM 的專案 ID
- REGION:您要建立 VM 的區域
- ZONE:您要建立 VM 的可用區
- OPERATION_ID:大量插入作業 ID
 回應中的 instancesBulkInsertOperationMetadata物件包含各區域作業的詳細資料,位於perLocationStatus欄位中。大量建立要求中包含的每個區域,perLocationStatus都包含下列欄位:- status:狀態為下列其中一種:- CREATING:可用區正在建立 VM。
- ROLLING_BACK:要求在可用區中失敗,因此正在回溯。
- DONE:可用區中的 VM 建立或回溯作業已順利完成。
 
- targetVmCount:Compute Engine 嘗試在區域中建立的 VM 數量。Compute Engine 會在初始檢查後決定這個計數,且在作業期間不會變更。檢查作業狀態時,每個區域一律會顯示這個欄位。
- createdVmCount:可用區中已建立的 VM 數量。這個值不會超過特定區域的- targetVmCount。- failedToCreateVmCount:在區域中建立 VM 時發生失敗的次數。
- deletedVmCount:在可用區中刪除的 VM 數量,這是還原失敗作業的一部分。
 
 回應中的 progress欄位代表作業的完成百分比。在 Compute Engine 成功建立至少最低數量的 VM,且不再建立 VM 或回滾要求之前,大量插入作業的狀態為 RUNNING。大量插入作業進行中時,您應該會看到類似下列內容的回應: { "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }在本範例中,一個執行個體已成功建立,作業完成度為 2%。 當 Compute Engine 成功建立至少 minCount指定的 VM 數量下限,或 Compute Engine 完成要求的回復作業時,作業會傳回DONE狀態。成功建立要求的 VM 數量後,您會收到類似下列內容的回應:{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }詳情請參閱 instancesBulkInsertOperationMetadata物件的說明文件。檢查單一 VM 的狀態如要檢查透過大量建立 VM 要求建立的單一 VM 狀態,請使用 gcloud CLI 或 Compute Engine API。 gcloud- 從要求傳回的 - Operation中,取得- operationGroupId屬性的值。
- 使用 - operationGroupId屬性做為- gcloud compute operations list指令的篩選器,在專案的所有作業和可用區中,搜尋與區域或可用區要求相關聯的 VM:- gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID) 
- 透過下列任一方式取得 VM 的其餘屬性: - 在作業清單中, - targetLink代表 VM 的路徑。使用- gcloud compute instances describe指令,並將這個路徑做為 VM 名稱,即可取得 VM 的屬性:- gcloud compute instances describe VM_NAME 
- 使用 - gcloud compute instances list指令,並加入包含作業清單中 VM 名稱的篩選器:- gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
- 使用 - gcloud compute instances list指令,取得所有可用區和區域的 VM 屬性,並依執行個體專屬的標籤或名稱進行篩選:- gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
 
 REST- 從要求傳回的 - Operation中,取得- operationGroupId屬性的值。
- 使用 - operationGroupId屬性取得與區域或可用區要求相關聯的 VM 作業清單:- 如果您傳送區域要求,如要搜尋專案中所有作業和所有區域,請使用 - globalOperations.aggregatedList方法,並將- operationGroupId屬性做為篩選條件:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID) 
- 如果您傳送區域要求,請使用 - zoneOperations.get方法列出該區域的作業,並在要求主體中加入- operationGroupId屬性:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
 
- 透過下列任一方式取得 VM 的其餘屬性: - 在作業清單中, - targetLink代表 VM 的路徑。使用- instances.get方法,並將這個路徑做為 VM 的名稱,即可取得 VM 的所有屬性:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME 
- 使用 - instances.get方法搭配篩選器,其中包含作業清單中的 VM 名稱:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
- 使用 - instances.aggregatedList方法,從所有區域取得 VM 的屬性,並依執行個體專屬的標籤或名稱進行篩選:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
 
 虛擬程式碼範例下列虛擬程式碼範例說明如何自訂要求,以便大量建立 VM。 從一組區域中,在一個區域中大量建立 VM下列虛擬程式碼說明如何從一組區域中,在一個區域內建立 1,000 個 VM。嘗試從一組區域在單一區域中大量建立 VM 時,要求會先檢查容量。如果容量不足,要求會立即失敗,並嘗試使用集合中的下一個區域。 - 指定要在可用區中建立的 VM 數量。 - nTarget = 1000
- 指定要嘗試在其中建立 VM 的區域。 - acceptableRegions = ["us-central1", "us-east1", "us-west1"]
- 逐一檢查各個區域,並嘗試在每個區域中建立 VM,直到成功為止。 - for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
 在可用區中大量建立 VM機型 下列虛擬程式碼說明如何在可用區中,以指定的機器類型建立多部 VM。嘗試以相同機器類型大量建立 VM 時,要求會先檢查這些機器類型是否可用。如果沒有足夠的機器類型可用,要求會立即失敗,並使用下一個機器類型重試。 - 指定要建立的 VM 數量,以及建立 VM 的區域。 - nTarget = 1000 region = "us-central1"
- 指定要嘗試建立 VM 的機器系列。 - acceptableMachineFamilies = ["n2","c2","e2","n1"]
- 逐一嘗試機器類型,直到成功建立 VM 為止。 - for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
 在一個可用區中建立超過 5,000 個 VM大量建立 VM 時,每個要求只能建立 5,000 個 VM。 下列虛擬程式碼說明如何發出多項要求,在一個可用區中建立超過 5,000 個 VM。 - 指定要建立的 VM 數量、用來追蹤建立 VM 總數的計數器、要建立 VM 的區域,以及用來儲存 Compute Engine 建立 VM 的區域的變數。 - nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
- 發出初始要求,建立 5,000 個 VM,儲存要求傳回的可用區,並更新已建立 VM 數量的計數器。 - call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
- 繼續向區域發出要求,一次最多可建立 5,000 個 VM,直到 Compute Engine 建立指定數量的 VM 為止。 - while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
 大量建立 VM 並查看狀態下列程序說明如何建立一組具有預先定義名稱的 VM,然後查看其狀態: - 指定要建立的 VM 數量、建立 VM 的可用區,以及用於儲存名稱的資料結構。 - nTarget = 1000 targetZone = "us-central-1a" names = []
- 產生 VM 的模式化名稱,並將名稱新增至資料結構。 - for n in range(0, 1000): names.push("instance-%d".format(n))
- 建立 VM,並使用 - perInstanceProperties指定名稱。- call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
- 使用 - instances.list方法,並搭配 VM 名稱的篩選條件,即可取得 VM 詳細資料。- instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
 後續步驟大量建立 VM 後,請執行下列任一或全部操作,簡化這些 VM 的管理作業: - 將 VM 新增至非代管執行個體群組。將 VM 新增至非代管執行個體群組後,您就能使用 Cloud Monitoring。非代管執行個體群組不會提供負載平衡或 VM 生命週期管理功能。 
- 使用標籤。標籤可讓您使用鍵/值組合整理資源。 
 除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。 上次更新時間:2025-10-19 (世界標準時間)。 -