일괄 인스턴스 API 사용


이 문서에서는 일괄 인스턴스 API와 이를 사용하여 서로 독립적인 여러 개의 동일한 VM을 만드는 방법을 설명합니다.

일괄 인스턴스 API를 사용하는 것은 API 요청을 일괄 처리하여 HTTP 요청 하나에 여러 인스턴스 삽입 API 요청을 집계하는 것과 다릅니다. 또한 일괄 인스턴스 API로 생성된 인스턴스는 자동으로 관리되지 않습니다.

다음은 instances.insert APIinstances.bulkInsert API를 비교하는 테이블입니다.

기능 instances.insert instances.bulkInsert
영역 선택
리소스 가용성 및 할당량 등을 고려하여 자동으로 선택됨
수동 리전 엔드포인트를 사용할 때 자동
사전 검증
요청이 불가능한 경우 즉시 실패
없음 용량 및 할당량 포함
VM 이름 생성
지정된 이름 패턴을 기반으로 자동 생성
수동 선택적으로 자동 생성
자동 롤백
Compute Engine이 대상 VM 수를 만들 수 없는 경우 요청을 자동으로 롤백함.
없음 선택적으로 사용 설정됨
API 비율 제한
요청이 API 비율 제한에 미치는 영향
인스턴스 요청당 일괄 인스턴스 요청당

Compute Engine이 VM을 관리하도록 하려면 관리형 인스턴스 그룹을 사용하세요.


고려사항

이 문서의 안내에 따라 일괄 인스턴스 API를 사용하는 경우 다음 사항에 유의하세요.

  • 일괄 인스턴스 API를 사용하면 리전 또는 영역 요청을 실행할 수 있습니다. 요청이 리전 요청인 경우 Compute Engine은 사용 가능한 하드웨어가 있는 영역에 기반하여 각 영역에서 사용 가능한 용량뿐 아니라 예비분까지 고려하여 VM을 만들 영역을 결정합니다. 이러한 리전 요청의 경우 Compute Engine은 VM을 배치할 단일 영역을 결정합니다. VM을 다른 영역에 배치하려면 해당 영역에 대한 별도의 요청을 실행합니다. 이 문서에는 그 방법을 보여주는 의사코드 예시가 포함되어 있습니다.

  • 일괄 인스턴스 API에 대한 요청은 단일 VM 생성 요청과 동일한 API 비율 제한을 사용합니다. 비율 제한을 위해 각 일괄 인스턴스 API 요청은 생성하는 VM 수에 관계없이 단일 요청으로 계산됩니다. 할당량이 충분하지 않으면 요청이 즉시 실패하고 rateLimitExceeded 오류가 발생하고 Compute Engine은 VM을 만들지 않습니다.

  • Google Cloud Console에서 VM 보기를 단순화하거나 Cloud Monitoring을 사용하려면 VM을 비관리형 인스턴스 그룹에 추가하세요. 비관리형 인스턴스 그룹은 VM 수명 주기 또는 부하 분산의 관리를 제공하지 않습니다. 비관리형 인스턴스 그룹을 사용하지 않고 VM을 그룹화하려면 라벨을 사용하면 됩니다.


가격 책정

이 문서의 안내에 따라 일괄 인스턴스 API를 사용하는 데는 추가 요금이 발생하지 않습니다. 단일 VM을 만들 때와 마찬가지로 VM을 만들었을 때 요금 청구가 시작됩니다.

일괄 인스턴스 API를 사용할 때 Compute Engine이 VM을 만들지 못하면 Compute Engine이 성공적으로 생성한 VM에 대해서만 요금이 청구됩니다.


시작하기 전에


일괄 인스턴스 API를 사용하여 VM 만들기

아래의 절차를 따르면 일괄 인스턴스 API를 사용하여 리전 또는 영역에 여러 VM을 만들 수 있습니다.

한 리전에 여러 VM 만들기

다음 절차는 일괄 인스턴스 API를 사용하여 특정 리전에 여러 VM을 만드는 방법을 설명합니다. 이 작업을 할 때는 Compute Engine이 영역을 결정합니다.

사용자가 머신 유형을 지정하거나 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 ]

다음을 바꿉니다.

  • NAME_PATTERN: VM의 이름 패턴입니다. Compute Engine의 해시(#) 문자 시퀀스를 사용하여 숫자 시퀀스로 바꿉니다. 예를 들어 이름 패턴에 vm-#을 사용하면 이름이 vm-1, vm-2 등으로 지정된 VM이 --count에 지정된 VM 수만큼 생성됩니다. 이 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.

    이름 패턴을 사용하는 경우 Compute Engine은 이전 요청에서 만든 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다. 또한 전역 DNS를 사용하는 경우 이름 충돌이 발생할 수 있습니다. 전역 DNS 사용으로 인한 이름 충돌을 피하려면 영역 DNS로 전환합니다. 영역 DNS로 전환할 수 없는 경우 다른 리전에서 동일한 이름 패턴을 사용하지 마세요.

  • PREDEFINED_NAMES: 생성할 VM의 사전 정의된 이름 목록입니다. 이 플래그를 사용하여 COUNT를 지정하는 경우 COUNT는 제공된 이름 수와 일치해야 합니다.

  • REGION: VM을 생성할 리전입니다.

  • COUNT: 만들 VM 수입니다. 이 수는 NAME_PATTERN에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는 --predefined-names를 사용하는 경우에는 COUNT를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.

  • MIN_COUNT: 생성할 최소 VM 수를 지정하는 선택적 플래그입니다. 다음 테이블에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.

    설정 설명
    설정되지 않음 기본값은 COUNT이며, Compute Engine이 VM COUNT개를 만들 수 없으면 요청의 유효성이 검증되지 않고 VM이 생성되지 않습니다.
    1으로 설정 Compute Engine은 가능한 한 많은 VM을 최대 COUNT개까지 만듭니다.
    1보다 크고 COUNT보다 작음 Compute Engine은 VM을 최소 COUNT개~최대MIN_COUNT개까지 만들려고 시도합니다. Compute Engine이 최소 MIN_COUNT개 이상의 VM을 만드는 경우 요청이 성공합니다.

API

한 리전에 여러 VM을 만들려면 필수 매개변수와 함께 instances.bulkInsert 메서드를 사용하세요.

POST https://www.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,
  ...
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.

  • REGION: VM을 생성할 리전입니다.

  • NAME_PATTERN: VM의 이름 패턴입니다. 이름 패턴을 지정하거나 perInstanceProperties를 지정하세요. Compute Engine의 해시(#) 문자 시퀀스를 사용하여 숫자 시퀀스로 바꿉니다. 예를 들어 이름 패턴에 vm-#을 사용하면 이름이 vm-1, vm-2 등으로 지정된 VM이 --count에 지정된 VM 수만큼 생성됩니다. 이 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.

    이름 패턴을 사용하는 경우 Compute Engine은 이전 요청에서 만든 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다. 또한 전역 DNS를 사용하는 경우 이름 충돌이 발생할 수 있습니다. 전역 DNS 사용으로 인한 이름 충돌을 피하려면 영역 DNS로 전환합니다. 영역 DNS로 전환할 수 없는 경우 다른 리전에서 동일한 이름 패턴을 사용하지 마세요.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: 생성할 VM의 사전 정의된 이름 목록입니다. 이름을 지정하거나 namePattern을 지정하세요. 이 플래그를 사용하여 COUNT를 지정하는 경우 COUNT는 제공된 이름 수와 같아야 합니다.

  • COUNT: 만들 VM 수입니다. 이 수는 NAME_PATTERN에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는 perInstanceProperties를 사용하는 경우에는 COUNT를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.

  • MIN_COUNT: 생성할 최소 VM 수를 지정하는 선택적 플래그입니다. 다음 테이블에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.

    설정 설명
    설정되지 않음 기본값은 COUNT이며 Compute Engine에서 VM COUNT개를 만들 수 없으면 요청이 롤백됩니다.
    1으로 설정 Compute Engine은 가능한 한 많은 VM을 최대 COUNT개까지 만듭니다.
    1보다 크고 COUNT보다 작음 Compute Engine은 VM을 최소 COUNT개~최대MIN_COUNT개까지 만들려고 시도합니다. Compute Engine이 최소 MIN_COUNT개 이상의 VM을 만드는 경우 요청이 성공합니다.

특정 영역에서 여러 VM 만들기

다음 절차는 일괄 인스턴스 API를 사용하여 한 영역에 여러 VM을 만드는 방법을 보여줍니다.

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 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.

    이름 패턴을 사용하는 경우 Compute Engine은 이전 요청에서 만든 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다. 또한 전역 DNS를 사용하는 경우 이름 충돌이 발생할 수 있습니다. 전역 DNS 사용으로 인한 이름 충돌을 피하려면 영역 DNS로 전환합니다. 영역 DNS로 전환할 수 없는 경우 다른 리전에서 동일한 이름 패턴을 사용하지 마세요.

  • PREDEFINED_NAMES: 생성할 VM의 사전 정의된 이름 목록입니다. 이 플래그를 사용하여 COUNT를 지정하는 경우 COUNT는 제공된 이름 수와 일치해야 합니다.

  • ZONE: VM을 생성할 영역입니다.

  • COUNT: 만들 VM 수입니다. 이 수는 NAME_PATTERN에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는 --predefined-names를 사용하는 경우에는 COUNT를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.

  • MIN_COUNT: 생성할 최소 VM 수를 지정하는 선택적 플래그입니다. 다음 테이블에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.

    설정 설명
    설정되지 않음 기본값은 COUNT이며 Compute Engine에서 VM COUNT개를 만들 수 없으면 요청이 롤백됩니다.
    1으로 설정 Compute Engine은 가능한 한 많은 VM을 최대 COUNT개까지 만듭니다.
    1보다 크고 COUNT보다 작음 Compute Engine은 VM을 최소 COUNT개~최대MIN_COUNT개까지 만들려고 시도합니다. Compute Engine이 최소 MIN_COUNT개 이상의 VM을 만드는 경우 요청이 성공합니다.

API

한 영역에 여러 VM을 만들려면 필수 매개변수와 함께 instances.bulkInsert 메서드를 사용하세요.

POST https://www.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 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.

    이름 패턴을 사용하는 경우 Compute Engine은 이전 요청에서 만든 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다. 또한 전역 DNS를 사용하는 경우 이름 충돌이 발생할 수 있습니다. 전역 DNS 사용으로 인한 이름 충돌을 피하려면 영역 DNS로 전환합니다. 영역 DNS로 전환할 수 없는 경우 다른 리전에서 동일한 이름 패턴을 사용하지 마세요.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: 생성할 VM의 사전 정의된 이름 목록입니다. 이름을 지정하거나 namePattern을 지정하세요. 이 플래그를 사용하여 COUNT를 지정하는 경우 COUNT는 제공된 이름 수와 같아야 합니다.

  • COUNT: 만들 VM 수입니다. 이 수는 NAME_PATTERN에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는 perInstanceProperties를 사용하는 경우에는 COUNT를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.

  • MIN_COUNT: 생성할 최소 VM 수를 지정하는 선택적 플래그입니다. 다음 테이블에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.

    설정 설명
    설정되지 않음 기본값은 COUNT이며 Compute Engine에서 VM COUNT개를 만들 수 없으면 요청이 롤백됩니다.
    1으로 설정 Compute Engine은 가능한 한 많은 VM을 최대 COUNT개까지 만듭니다.
    1보다 크고 COUNT보다 작음 Compute Engine은 VM을 최소 COUNT개~최대MIN_COUNT개까지 만들려고 시도합니다. Compute Engine이 최소 MIN_COUNT개 이상의 VM을 만드는 경우 요청이 성공합니다.

일괄 인스턴스 API를 사용하여 만든 VM 상태 확인

일괄 인스턴스 API를 사용하여 여러 VM을 만든 후 다음 절차에 따라 일괄 인스턴스 API에 대한 요청 상태를 확인하거나 일괄 인스턴스 API에 대한 요청의 일부인 단일 VM의 상태를 확인합니다.

일괄 인스턴스 요청의 상태 확인

일괄 인스턴스 API에 대한 요청 상태를 확인할 때 일괄 작업은 Compute Engine이 지정된 VM의 최소 VM 수를 성공적으로 만들었을 때만 DONE을 반환하며 그렇지 않으면 요청을 롤백합니다.

일괄 인스턴스 API에 대한 요청 상태를 확인하는 방법에 대한 자세한 내용은 API 응답 처리를 참조하세요.

단일 VM의 상태 확인

일괄 인스턴스 API는 각 VM의 Operations를 만드는 데, 여기에는 VM 이름과 생성 상태가 포함됩니다.

다음 절차는 Compute Engine이 일괄 인스턴스 API에 전송된 요청을 기반으로 VM 그룹의 일부로 만든 단일 VM의 상태를 확인하는 방법을 보여줍니다.

gcloud

  1. 일괄 인스턴스 API에 대한 요청에서 반환된 Operation에서 operationGroupId 속성 값을 검색하세요.

  2. operationGroupId 속성을 필터로 사용하여 gcloud compute operations list 명령어로 일괄 인스턴스 API에 대한 리전 또는 영역 요청과 연관된 VM에 대하여 프로젝트의 모든 작업과 모든 영역을 검색합니다.

    gcloud compute operations list \
      --filter=(operationGroupId=OPERATION_GROUP_ID)
    
  3. 다음 중 하나를 수행하여 VM의 나머지 속성을 가져오세요.

    • 작업 목록에서 targetLink는 VM의 경로를 나타냅니다. gcloud compute instances describe 메서드를 이 경로와 함께 VM 이름으로 사용하여 VM의 전체 속성을 가져옵니다.

      gcloud compute instances describe VM_NAME
      
    • 작업 목록에서 VM의 이름이 포함된 필터와 함께 gcloud compute instances list 메서드를 사용합니다.

      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)
      

API

  1. 일괄 인스턴스 API에 대한 요청에서 반환된 Operation에서 operationGroupId 속성 값을 검색하세요.

  2. operationGroupId 속성을 필터로 사용하여 일괄 인스턴스에 대한 리전 또는 영역 요청과 관련된 VM 작업 목록을 가져옵니다.

    • 일괄 인스턴스 API에 리전 요청을 보낸 경우 globalOperations.aggregatedList 메서드를 사용하여 프로젝트의 모든 작업과 모든 영역을 검색합니다.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
      
    • 일괄 인스턴스 API에 영역 요청을 보낸 경우 zoneOperations.get 메서드를 사용하여 해당 영역의 작업을 나열합니다.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert?filter=(operationGroupId=OPERATION_GROUP_ID)
      
  3. 다음 중 하나를 수행하여 VM의 나머지 속성을 가져오세요.

    • 작업 목록에서 targetLink는 VM의 경로를 나타냅니다. instances.get 메서드를 이 경로와 함께 VM 이름으로 사용하여 VM의 전체 속성을 가져옵니다.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
      
    • 작업 목록에서 VM의 이름이 포함된 필터와 함께 instances.get 메서드를 사용합니다.

      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)
      

의사코드 예시

다음 의사코드 예시는 일괄 인스턴스 API에 대한 요청을 맞춤설정하는 방법을 보여줍니다.

한 리전의 여러 영역에 여러 VM 만들기

기본적으로 일괄 인스턴스 API를 사용하여 여러 VM을 만들면 Compute Engine은 모든 VM을 동일한 영역에 배치합니다. 다음 절차는 리전의 여러 영역에 있을 수 있는 최대 1,000개의 VM을 만드는 방법을 보여주는 의사코드에 대해 설명합니다.

  1. 생성할 VM 수를 지정하고 생성되는 VM 수를 추적하기 위해 카운터를 초기화합니다.

    nTarget = 1000
    nCreated = 0
    
  2. 리전 내에서 사용 가능한 영역으로 데이터 구조를 초기화합니다. 프로젝트에 사용 가능한 영역 목록을 가져오려면 zones.list 메서드를 사용합니다.

    zones = list of zones in region
    
  3. 영역 목록 전체에서 반복하세요. 반복할 때마다 minCount1인 일괄 API를 호출하여 생성된 총 VM 수를 업데이트합니다. minCount1이면 Compute Engine은 최대 nTarget까지 가능한 많은 VM을 만듭니다.

    for each zone in zones:
      call bulk API: zone=zone, minCount=1, count=(nTarget - nCreated)
      nCreated += (# of VMs created)
      if (vmsCreated == targetN)
        break
    

리전의 한 영역에 여러 VM 만들기

다음 의사코드는 일괄 인스턴스 API를 사용하여 지정된 리전 내의 영역에 최대 1,000개의 VM을 만드는 방법을 설명합니다. 지정된 리전 집합의 한 리전에서 여러 VM을 만들려고 하면 요청이 먼저 용량을 확인합니다. 용량이 부족하면 요청이 즉시 실패하고 세트의 다음 리전으로 다시 시도합니다.

  1. 영역 내에 만들 VM 수를 지정하세요.

    nTarget = 1000
    
  2. VM을 만들 리전을 지정하세요.

    acceptableRegions = ["us-central1", "us-east1", "us-west1"]
    
  3. 리전을 반복하고 성공할 때까지 각 리전에 VM 만들기를 시도하세요.

    for region in acceptableRegions:
      call bulk API: region=region, count=nTarget
      if request succeeds and the operation succeeds:
        break
    

머신 유형의 한 영역에 여러 VM 만들기

다음 의사코드에서는 일괄 인스턴스 API를 사용하여 영역에서 지정된 머신 유형 중 하나에 여러 VM을 만드는 방법에 대해 설명합니다. 동일한 머신 유형의 VM 여러 개를 만들려고 하면 요청은 먼저 해당 머신 유형의 가용성을 확인합니다. 사용 가능한 머신 유형이 충분하지 않으면 요청이 즉시 실패하고 다음 머신 유형으로 다시 시도됩니다.

  1. 생성할 VM 수와 VM을 생성할 리전을 지정하세요.

    nTarget = 1000
    region = "us-central1"
    
  2. VM을 만들 머신 계열을 지정하세요.

    acceptableMachineFamilies = ["n2","c2","e2","n1"]
    
  3. 머신 유형 집합을 반복하면서 성공할 때까지 머신 유형에서 VM 생성을 시도하세요.

    for family in acceptableMachineFamilies:
      call bulk APIs: region=region, count=nTarget, machineFamily=family
      if request succeeds and the operation succeeds:
        break
    

한 영역에 1,000개 이상의 VM 만들기

일괄 인스턴스 API를 사용하여 VM을 만들 때 각 요청에 VM을 1,000개만 만들 수 있습니다. 다음 의사코드는 여러 요청을 실행하여 한 영역에서 1,000개 이상의 VM을 만드는 방법을 설명합니다.

  1. 생성할 VM 수, 생성된 총 VM 수를 추적하는 카운터, VM을 만들 리전, Compute Engine이 VM을 생성하는 영역을 저장할 변수를 지정하세요.

    nTarget = 10000
    nCreated = 0
    region = "us-central1"
    targetZone = ""
    
  2. 초기 요청을 발동하여 VM 1, 000개를 만들고, 요청에서 반환된 영역을 저장한 다음 생성된 VM 수의 카운터를 업데이트합니다.

    call bulk API: region=region, count=1000
    targetZone = zone chosen by bulk API
    nCreated += # of VMs created
    
  3. Compute Engine이 지정된 VM 수를 생성할 때까지 한 영역에서 한 번에 최대 1,000개의 VM을 계속 생성할 수 있습니다.

    while(nTarget - nCreated > 0):
      call bulk API: zone=targetZone, count=1000
      nCreated += # of VMs created
    

여러 VM에 대한 상세 정보 보기

다음 절차에서는 일괄 인스턴스 API로 사전 정의된 이름을 사용하여 생성된 인스턴스의 세부정보를 가져오는 데 사용할 수 있는 의사 코드에 대해 설명합니다.

  1. 만들 VM 수, VM을 만들 영역, 이름을 저장할 데이터 구조를 지정하세요.

    nTarget = 1000
    targetZone = "us-central-1a"
    names = []
    
  2. 패턴의 VM 이름을 생성하고 데이터 구조에 추가하세요.

    for n in range(0,1000):
      names.push("instance-%d".format(n))
    
  3. VM을 만들고 perInstanceProperties을 사용하여 이름을 지정하세요.

    call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
    
  4. 세부정보를 반환하기 위해 VM의 이름 필터와 함께 instances.list 메서드를 사용하여 VM의 세부정보를 가져옵니다.

    instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
    

제한사항

일괄 인스턴스 API를 사용하기 전에 다음 제한사항 목록을 참조하세요.

  • 각 프로젝트에서 일괄 인스턴스 API를 사용하여 동시에 실행되는 작업 수의 한도는 10개입니다.

  • 요청마다 만들 수 있는 VM 수의 한도는 1,000개입니다. VM을 1,000개 넘게 만드는 여러 요청을 실행하는 방법의 예시는 이 문서의 의사코드를 참조하세요.

  • 이름을 제외한 모든 VM 속성은 동일해야 합니다.

  • VM 간에 상호 배타적인 VM 속성은 사용할 수 없으며, 여기에는 다음과 같은 속성의 예가 있으나 이것이 전부는 아닙니다.

    • 커스텀 호스트 이름
    • 고정 외부 IP
    • 고정 내부 IP
  • 일괄 인스턴스 API를 사용하면 다음을 사용하는 VM을 만들 수 없습니다.

    • 고객 관리 암호화 키로 보호되는 디스크
    • 고객 제공 암호화 키로 보호되는 디스크
    • 머신 이미지
    • 단독 테넌트 노드 어피니티 라벨
  • 전역 DNS를 사용하는 경우 영역이 정규화된 도메인 이름(FQDN)에 포함되어 있지 않으므로 이름 충돌이 발생할 수 있습니다. 이를 방지하려면 영역 DNS를 사용합니다. 영역 DNS로 전환할 수 없는 경우 다른 리전에서 동일한 이름 패턴을 사용하지 마세요.

  • 드문 경우지만 Compute Engine이 인스턴스 일괄 API에 대한 요청을 검증한 후에는 요청이 실패할 수 있습니다. 예를 들어 다른 요청이 사용 가능한 할당량을 소비했기 때문에 Compute Engine이 VM을 만들 수 없는 경우입니다. 이 경우 Compute Engine은 요청을 롤백하고 이미 생성된 VM을 모두 삭제합니다.


감사 로그

Compute Engine은 요청 시작 및 종료 시점에 일괄 인스턴스 API에 대한 정보를 관리자 활동 감사 로그에 기록합니다.

또한 Compute Engine은 각 VM에 대해 별도의 감사 로그를 만듭니다. 단일 VM의 감사 로그는 이름 지정 패턴으로 생성된 VM 이름과 protoPayload.resourceName 값을 일치시켜 찾을 수 있습니다.


다음 단계