디스크 스냅샷 관리


표준 디스크 스냅샷을 사용하면 Persistent Disk와 Google Cloud Hyperdisk의 데이터를 주기적으로 백업할 수 있습니다.

디스크 스냅샷을 보고, 나열하고, 삭제할 수 있습니다. 또한 프로젝트 간에 스냅샷을 공유할 수 있습니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

필수 역할 및 권한

표준 스냅샷을 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 표준 스냅샷을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

표준 스냅샷을 관리하려면 다음 권한이 필요합니다.

  • 스냅샷 나열: 프로젝트에 대한 compute.snapshots.list 권한
  • 스냅샷에 대한 정보 보기: 스냅샷에 대한 compute.snapshots.get 권한
  • 스냅샷 삭제: 스냅샷에 대한 compute.snapshots.delete 권한
  • 필터를 기준으로 스냅샷 삭제:
    • 스냅샷에 대한 compute.snapshots.delete 권한
    • 프로젝트에 대한 compute.snapshots.list 권한
  • 프로젝트 간에 스냅샷 데이터를 공유:
    • 프로젝트에 대한 compute.storageAdmin 권한(모든 표준 스냅샷에 액세스용)
    • 공유할 프로젝트에 대한 compute.disks.create 권한
    • 소스 프로젝트에 대한 compute.snapshots.create 권한
    • 소스 디스크에 대한 compute.disks.createSnapshot 권한

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

프로젝트 또는 위치의 표준 스냅샷 보기

gcloud CLI, Google Cloud 콘솔, REST를 사용하여 프로젝트 또는 위치의 표준 스냅샷을 보거나 나열할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 스냅샷 페이지로 이동합니다.

    스냅샷 페이지로 이동

  2. 스냅샷 탭에서 현재 프로젝트의 표준 스냅샷을 볼 수 있습니다.

  3. 선택사항입니다. filter_list 필터 필드를 사용하여 결과 범위를 좁힙니다. 필터 필드에 속성 이름 또는 값을 입력하거나 사용 가능한 속성 중에서 선택합니다.

gcloud

특정 프로젝트에서 사용할 수 있는 스냅샷 목록을 보려면 gcloud compute snapshots list 명령어를 사용합니다.

gcloud compute snapshots list --project=PROJECT_ID

선택사항입니다. PROJECT_ID를 프로젝트 ID로 바꿉니다. 이 플래그를 생략하면 현재 프로젝트가 사용됩니다. gcloud CLI 명령어 gcloud config set project PROJECT_ID를 사용하여 세션의 기본 프로젝트를 설정할 수 있습니다.

REST

특정 프로젝트에서 사용할 수 있는 스냅샷 목록을 보려면 snapshots.list 메서드GET 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots

PROJECT_ID를 프로젝트 ID로 바꿉니다.

디스크의 표준 스냅샷 보기

Google Cloud 콘솔, gcloud CLI 또는 REST를 사용하여 디스크의 표준 스냅샷 목록을 볼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 스냅샷 페이지로 이동합니다.

    스냅샷 페이지로 이동

  2. 스냅샷 탭에 프로젝트의 모든 표준 스냅샷 목록이 나타납니다.

  3. 소스 디스크로 결과 범위를 좁힙니다.

    1. filter_list 필터 필드에 Source disk:를 입력하거나 필터 필드를 클릭한 후 속성 목록에서 Source disk 값을 선택합니다.

    2. 필터 필드의 Source disk: 옆에 표시되는 목록에서 디스크 이름을 선택합니다.

      이제 콘솔에 표시된 스냅샷에 지정된 디스크의 모든 표준 스냅샷이 표시됩니다.

      목록에 디스크 이름이 표시되지 않으면 Source disk: 옆의 필터 필드에 소스 디스크 이름의 처음 몇 글자를 입력하여 보이는 값 목록을 변경하세요.

gcloud

gcloud compute snapshots list 명령어와 --filter 인수를 사용하여 디스크의 표준 스냅샷을 나열합니다.

  • 영역 디스크의 인스턴트 표준 스냅샷을 나열합니다.

    gcloud compute snapshots list --filter="sourceDisk:projects/PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME
    
  • 리전 디스크의 인스턴트 표준 스냅샷을 나열합니다.

    gcloud compute snapshots list --filter=sourceDisk:projects/PROJECT_ID/regions/SOURCE_REGION/disks/DISK_NAME
    

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • SOURCE_ZONE: (영역 디스크만 해당) 디스크의 영역 이름입니다(예: us-west1-a).
  • SOURCE_REGION: (리전 디스크만 해당) 디스크의 리전 이름입니다(예: us-west1).
  • DISK_NAME: 디스크 이름입니다(예: disk-1).

REST

snapshots.list 메서드GET 요청을 사용하여 영역 또는 리전 디스크의 표준 스냅샷을 나열합니다.

filter=sourceDisk 쿼리 매개변수를 사용하여 디스크 이름을 지정합니다.

  • 영역 디스크의 인스턴트 표준 스냅샷을 나열합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots?filter=sourceDisk:'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME'
    
  • 리전 디스크의 인스턴트 표준 스냅샷을 나열합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots?filter=sourceDisk:'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SOURCE_REGION/disks/DISK_NAME'
    

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • SOURCE_ZONE: (영역 디스크만 해당) 디스크의 영역 이름입니다(예: us-west1-a).
  • SOURCE_REGION: (리전 디스크만 해당) 디스크의 리전 이름입니다(예: us-west1).
  • DISK_NAME: 소스 디스크 이름입니다(예: disk-1).

표준 스냅샷에 관한 정보 보기

Google Cloud 콘솔, Google Cloud CLI, REST를 사용하여 생성 시간, 소스 디스크, 크기와 같은 표준 스냅샷에 대한 자세한 정보를 검색합니다.

콘솔

  1. Google Cloud 콘솔에서 스냅샷 페이지로 이동합니다.

    스냅샷 페이지로 이동

  2. 스냅샷 탭에서 프로젝트의 스냅샷 목록을 확인합니다.

  3. 이름 열에서 표준 스냅샷 이름을 클릭합니다. 선택한 스냅샷의 스냅샷 세부정보 페이지가 표시되고 해당 속성이 표시됩니다.

gcloud

표준 스냅샷에 대한 정보를 보려면 gcloud compute snapshots describe 명령어를 사용합니다.

gcloud compute snapshots describe SNAPSHOT_NAME

SNAPSHOT_NAME을 표준 스냅샷의 이름으로 바꿉니다.

REST

snapshots.get 메서드에 대해 GET 요청을 실행합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME

다음을 바꿉니다.

  • PROJECT_ID: 표준 스냅샷이 포함된 프로젝트의 이름입니다.
  • SNAPSHOT_NAME: 표준 스냅샷의 이름입니다.

스냅샷 삭제

Compute Engine에서는 차등 스냅샷을 사용하므로 각 스냅샷에는 이전 스냅샷 이후로 변경된 데이터만 포함됩니다. 이후 스냅샷에서 이전 스냅샷에 저장된 정보를 필요로 하는 경우도 있으므로 스냅샷을 삭제한다고 해서 해당 스냅샷의 모든 데이터가 반드시 삭제되는 것은 아닙니다.

스냅샷 삭제에 대한 자세한 내용은 스냅샷 삭제를 참조하세요.

콘솔

  1. Google Cloud 콘솔의 스냅샷 페이지로 이동합니다.

    스냅샷 페이지로 이동

  2. 삭제할 스냅샷을 하나 이상 선택합니다.

  3. 스냅샷 페이지의 상단에서 삭제를 클릭합니다.

gcloud

스냅샷을 삭제하려면 gcloud compute snapshots delete 명령어를 사용합니다.

gcloud compute snapshots delete SNAPSHOT_NAME

SNAPSHOT_NAME을 삭제할 스냅샷의 이름으로 바꿉니다.

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
)

// deleteSnapshot deletes a snapshot of a disk.
func deleteSnapshot(w io.Writer, projectID, snapshotName string) error {
	// projectID := "your_project_id"
	// snapshotName := "your_snapshot_name"

	ctx := context.Background()
	snapshotsClient, err := compute.NewSnapshotsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewSnapshotsRESTClient: %w", err)
	}
	defer snapshotsClient.Close()

	req := &computepb.DeleteSnapshotRequest{
		Project:  projectID,
		Snapshot: snapshotName,
	}

	op, err := snapshotsClient.Delete(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to delete snapshot: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Snapshot deleted\n")

	return nil
}

자바


import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.SnapshotsClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class DeleteSnapshot {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.

    // Project ID or project number of the Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";

    // Name of the snapshot to be deleted.
    String snapshotName = "YOUR_SNAPSHOT_NAME";

    deleteSnapshot(projectId, snapshotName);
  }

  // Delete a snapshot of a disk.
  public static void deleteSnapshot(String projectId, String snapshotName)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `snapshotsClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (SnapshotsClient snapshotsClient = SnapshotsClient.create()) {

      Operation operation = snapshotsClient.deleteAsync(projectId, snapshotName)
          .get(3, TimeUnit.MINUTES);

      if (operation.hasError()) {
        System.out.println("Snapshot deletion failed!" + operation);
        return;
      }

      System.out.println("Snapshot deleted!");
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const snapshotName = 'YOUR_SNAPSHOT_NAME';

const compute = require('@google-cloud/compute');

async function deleteSnapshot() {
  const snapshotsClient = new compute.SnapshotsClient();

  const [response] = await snapshotsClient.delete({
    project: projectId,
    snapshot: snapshotName,
  });
  let operation = response.latestResponse;
  const operationsClient = new compute.GlobalOperationsClient();

  // Wait for the create disk operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
    });
  }

  console.log('Snapshot deleted.');
}

deleteSnapshot();

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1

def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result

def delete_snapshot(project_id: str, snapshot_name: str) -> None:
    """
    Delete a snapshot of a disk.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        snapshot_name: name of the snapshot to delete.
    """

    snapshot_client = compute_v1.SnapshotsClient()
    operation = snapshot_client.delete(project=project_id, snapshot=snapshot_name)

    wait_for_extended_operation(operation, "snapshot deletion")

REST

snapshots.delete 메서드에 대해 DELETE 요청을 수행하여 스냅샷을 삭제합니다.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 이름
  • SNAPSHOT_NAME: 삭제할 스냅샷의 이름

필터를 기준으로 여러 스냅샷 삭제

Compute Engine에서는 차등 스냅샷을 사용하므로 각 스냅샷에는 이전 스냅샷 이후로 변경된 데이터만 포함됩니다. 이후 스냅샷에서 이전 스냅샷에 저장된 정보를 필요로 하는 경우도 있으므로 스냅샷을 삭제해도 해당 스냅샷의 모든 데이터가 반드시 삭제되는 것은 아닙니다.

스냅샷 삭제에 대한 자세한 내용은 스냅샷 삭제를 참조하세요.

특정 필터에 따라 스냅샷 여러 개를 삭제할 수 있습니다. gcloud CLI에서 필터를 사용하는 방법에 대한 자세한 내용은 gcloud CLI 주제 필터를 참조하세요.

스냅샷을 삭제하려면 gcloud compute snapshots list 명령어와 특정 필터를 함께 사용하고 gcloud compute snapshots delete 명령어xargs를 함께 사용합니다.

  gcloud compute snapshots list --filter="EXPRESSION" --uri |
  xargs gcloud compute snapshots delete
  

EXPRESSION을 gcloud CLI 주제 필터로 바꿉니다.

예를 들어 --filter="creationTimestamp<'2023-12-31'"은 2023년 12월 31일 이전에 생성된 모든 스냅샷을 삭제합니다.

동일 조직에서 프로젝트 간 스냅샷 데이터 공유

이 절차에 따라 한 프로젝트의 디스크에서 동일 조직 내에 있는 다른 프로젝트의 디스크로 데이터를 이동할 수 있습니다.

gcloud

  1. gcloud compute snapshots create 명령어를 사용하여 대상 프로젝트에서 표준 스냅샷을 만듭니다. 예를 들어 영역 Persistent Disk 또는 Hyperdisk의 스냅샷을 만들려면 다음 명령어를 사용합니다.

    gcloud compute snapshots create SNAPSHOT_NAME \
     --source-disk https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \
     --project DESTINATION_PROJECT_ID
    

    다음을 바꿉니다.

    • SNAPSHOT_NAME: 새 스냅샷의 이름
    • SOURCE_PROJECT_ID: 소스 디스크의 프로젝트 ID
    • ZONE: 소스 디스크의 영역
    • SOURCE_DISK_NAME: 소스 디스크의 이름입니다.
    • DESTINATION_PROJECT_ID: 새 스냅샷의 대상 프로젝트 ID
  2. 대상 프로젝트에서 gcloud compute disks create 명령어를 사용하여 스냅샷을 기준으로 영역별 또는 리전별 디스크를 만듭니다.

    gcloud compute disks create DISK_NAME \
     --source-snapshot SNAPSHOT_NAME \
     --project DESTINATION_PROJECT_ID
    

    다음을 바꿉니다.

    • DISK_NAME: 새 디스크의 이름
    • SNAPSHOT_NAME: 스냅샷의 이름
    • DESTINATION_PROJECT_ID: 새 디스크의 대상 프로젝트의 ID

REST

  1. snapshots.insert 메서드를 호출하여 대상 프로젝트에 표준 스냅샷을 만듭니다. 예를 들어 영역 Persistent Disk 또는 Hyperdisk의 스냅샷을 만들려면 다음 요청을 수행합니다.

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
     "name": SNAPSHOT_NAME
     "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME
    }
    

    다음을 바꿉니다.

    • DESTINATION_PROJECT_ID: 새 스냅샷의 대상 프로젝트의 ID
    • SNAPSHOT_NAME: 스냅샷의 이름
    • SOURCE_PROJECT_ID: 소스 디스크 프로젝트의 ID
    • SOURCE_ZONE: 소스 디스크의 영역
    • SOURCE_DISK_NAME: 소스 디스크의 이름입니다.
  2. 대상 프로젝트에서 영역별 disks.insert 메서드 또는 리전별 regionDisks.insert 메서드를 사용해서 스냅샷을 기준으로 영역별 또는 리전별 디스크를 만듭니다.

    예를 들어 영역별 디스크를 만들려면 다음 요청을 수행합니다.

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/zones/DESTINATION_ZONE/disks
    {
     "name": DISK_NAME
     "sourceSnapshot": SNAPSHOT_NAME
    }
    

    다음을 바꿉니다.

    • DESTINATION_PROJECT_ID: 새 디스크의 대상 프로젝트의 ID
    • DESTINATION_ZONE: 새 디스크의 대상 프로젝트에 있는 영역
    • DISK_NAME: 새 디스크의 이름
    • SNAPSHOT_NAME: 스냅샷의 이름

사용할 수 있는 스냅샷 목록을 가져오려면 프로젝트 또는 위치의 표준 스냅샷 보기를 참조하세요.

여러 조직에서 프로젝트 간 스냅샷 공유

이 절차에 따라 한 조직의 프로젝트에 있는 표준 스냅샷을 다른 조직의 다른 프로젝트와 공유할 수 있습니다.

gcloud

  1. 소스 프로젝트에서 gcloud compute disks create 명령어를 사용하여 스냅샷을 기반으로 디스크를 만듭니다.

    gcloud compute disks create DISK_NAME \
     --source-snapshot SNAPSHOT_NAME \
     --project SOURCE_PROJECT_ID \
     --zone ZONE
    

    다음을 바꿉니다.

    • DISK_NAME: 새 디스크의 이름
    • SNAPSHOT_NAME: 스냅샷의 이름
    • SOURCE_PROJECT_ID: 소스 프로젝트의 ID
    • ZONE: 새 디스크를 만들 영역

    이 디스크는 조직 간 스냅샷 복사를 위해서만 생성되는 임시 디스크입니다.

  2. 대상 프로젝트에서 gcloud compute snapshots create 명령어를 사용하여 스냅샷을 만듭니다.

    예를 들어 첫 번째 단계에서 만든 영역 디스크를 사용하여 스냅샷을 만들려면 다음 명령어를 사용합니다.

    gcloud compute snapshots create SNAPSHOT_NAME \
     --source-disk https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/ZONE/disks/DISK_NAME \
     --project DESTINATION_PROJECT_ID
    

    다음을 바꿉니다.

    • SNAPSHOT_NAME: 스냅샷의 이름입니다.
    • SOURCE_PROJECT_ID: 소스 디스크가 포함된 프로젝트의 ID
    • ZONE: 소스 디스크의 영역
    • DISK_NAME: 1단계에서 만든 디스크의 이름
    • DESTINATION_PROJECT_ID: 새 스냅샷의 대상 프로젝트 ID

    사용할 수 있는 스냅샷 목록을 가져오려면 프로젝트 또는 위치의 표준 스냅샷 보기를 참조하세요.

  3. gcloud compute disks delete 명령어를 사용하여 첫 번째 단계에서 만든 임시 디스크를 삭제합니다.

    gcloud compute disks delete DISK_NAME \
     --project SOURCE_PROJECT_ID --zone ZONE
    

    다음을 바꿉니다.

    • DISK_NAME: 1단계에서 만든 디스크의 이름
    • SOURCE_PROJECT_ID: 소스 디스크가 포함된 프로젝트의 ID
    • ZONE: 디스크 영역

REST

  1. 소스 프로젝트에서 영역별 disks.insert 메서드를 사용하여 스냅샷을 기준으로 영역별 또는 리전별 디스크를 만듭니다.

    예를 들어 영역별 디스크를 만들려면 다음 요청을 수행합니다.

    POST https://compute.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks
    {
     "name": DISK_NAME
     "sourceSnapshot": SNAPSHOT_NAME
    }
    

    다음을 바꿉니다.

    • SOURCE_PROJECT_ID: 새 디스크의 소스 프로젝트 ID
    • SOURCE_ZONE: 새 디스크의 영역
    • DISK_NAME: 새 디스크의 이름
    • SNAPSHOT_NAME: 스냅샷의 이름

    이 디스크는 조직 간 스냅샷 복사를 위해서만 생성되는 임시 디스크입니다.

  2. snapshots.insert 메서드를 호출하여 대상 프로젝트에 스냅샷을 만듭니다.

    예를 들어 첫 번째 단계에서 만든 영역 디스크를 사용하여 스냅샷을 만들려면 다음 명령어를 사용합니다.

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
       "name": SNAPSHOT_NAME
       "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME
    }
    

    다음을 바꿉니다.

    • DESTINATION_PROJECT_ID: 새 스냅샷의 대상 프로젝트 ID
    • SNAPSHOT_NAME: 스냅샷의 이름입니다.
    • SOURCE_PROJECT_ID: 소스 디스크가 포함된 프로젝트의 ID
    • SOURCE_ZONE: 소스 디스크의 영역
    • DISK_NAME: 소스 디스크의 이름입니다.
  3. disks.delete 메서드를 사용하여 첫 번째 단계에서 만든 임시 디스크를 삭제합니다.

    DELETE https://compute.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME
    

    다음을 바꿉니다.

    • SOURCE_PROJECT_ID: 임시 디스크가 포함된 프로젝트의 ID입니다.
    • SOURCE_ZONE: 디스크 영역
    • DISK_NAME: 1단계에서 만든 임시 디스크의 이름

다음 단계