インスタント スナップショットからディスクを復元する


インスタント スナップショットでキャプチャされたデータにアクセスするには、インスタント スナップショットからディスクを復元するか、または新しいディスクを作成する必要があります。

このページでは、インスタント スナップショットからディスクを作成する方法について説明します。ディスクの作成後は、仮想マシン(VM)にアタッチして使用できます。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

制限事項

次の制限が適用されます。

  • インスタント スナップショットからディスクを作成する場合、新しいディスクは常にスナップショットのソースディスクと同じタイプ、ストレージ ロケーション、暗号化になります。

  • インスタント スナップショットから VM を直接作成することはできません。インスタント スナップショットからディスクを作成し、新しいディスクを使用して VM を作成する必要があります。

  • インスタント スナップショットのソースディスクが顧客管理の暗号鍵または顧客指定の暗号鍵を使用している場合、インスタント スナップショットから新しいディスクを作成するときに、同じ暗号鍵を指定する必要があります。

    次の例を考えてみましょう。顧客指定の暗号鍵(CSEK)KEY-1 で暗号化されたディスク DISK-1 があるとします。また、DISK-1 から作成されたインスタント スナップショット IS-1 もあります。IS-1 から新しいディスクを作成するには、新しいディスクを作成するときに、同じ鍵 KEY-1 を指定する必要があります。

    ディスクが顧客管理の暗号鍵(CMEK)で暗号化されている場合は、REST または gcloud CLI を使用してディスクを作成する場合にのみ、鍵を指定する必要があります。Google Cloud コンソールを使用する場合は、暗号鍵を指定する必要はありません。

インスタント スナップショットからディスクを作成する

インスタント スナップショットは、ソースディスクと同じ暗号化で暗号化されます。インスタント スナップショットからディスクを作成する手順は、インスタント スナップショットのソースディスクの暗号化方法によって異なります。

各ソースディスクは、次のいずれかの方法で暗号化されます。

  • Google が所有して管理する鍵グローバル ウィンドウはデフォルト。
  • 顧客管理の暗号鍵(CMEK)
  • 顧客指定の暗号鍵(CSEK)

特定のディスクの暗号化方法を確認するには、ディスクの暗号化に関する情報を表示するをご覧ください。

デフォルトの暗号化で暗号化されたインスタント スナップショットからディスクを作成する

gcloud CLI、Google Cloud コンソール、または REST を使用して、インスタント スナップショットからディスクを作成できます。

コンソール

  1. 復元するインスタント スナップショットを見つけます。

    1. Google Cloud コンソールで、[スナップショット] ページに移動します。

      [スナップショット] に移動

    2. [即時スナップショット] タブをクリックします。

    3. [名前] 列で、復元するインスタント スナップショットの名前をクリックします。

  2. [ディスクを作成] をクリックします。

  3. [名前] フィールドに、ディスクの新しい名前を入力します。

  4. 省略可: [説明] フィールドに詳細を入力します。

  5. [ディスクソースの種類] が「インスタント スナップショット」であることを確認します。

  6. [ソースの即時スナップショット] リストで、インスタント スナップショットを選択します。

  7. (省略可)ディスクの追加のカスタマイズを構成します。

    • サイズを入力します。[サイズ] フィールドに、ディスクのサイズを GB 単位で指定します。サイズは、スナップショットのソースディスクのサイズ以上である必要があります。
    • バックアップのスケジュールを設定します。Compute Engine でこの新しいディスクの標準スナップショットをスケジュールで作成するには、[スナップショット スケジュールを有効にする] チェックボックスをオンにして、スナップショット スケジュールを選択します。それ以外の場合は、このチェックボックスをオフにします。
  8. 省略可: プロジェクトを整理するには、1 つ以上のラベルを追加します。

  9. ディスクを作成するには、[作成] をクリックします。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud beta compute disks create コマンドを使用します。指定する引数は、ゾーンディスクとリージョン ディスクのどちらを作成するかによって異なります。

    ゾーンディスクを作成する

    --zone フラグを使用してゾーンを指定します。

    gcloud beta compute disks create DISK_NAME \
         --zone=ZONE \
         --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME
    

    次のように置き換えます。

    • DISK_NAME: 新しいディスクの名前。
    • ZONE: 新しいディスクのゾーン(例: europe-west1-a)。
    • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。

    リージョン ディスクを作成する

    リージョンを --region で指定し、新しいディスクのターゲット レプリケーション ゾーンを --replica-zones で指定します。

      gcloud beta compute disks create DISK_NAME \
         --region=REGION \
         --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
         --replica-zones=ZONE1,ZONE2
    

    次のように置き換えます。

    • DISK_NAME: 新しいディスクの名前。
    • REGION: リージョン ディスクを配置するリージョン(例: europe-west1
    • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。
    • ZONE1,ZONE2: 2 つのディスク レプリカが配置されるリージョン内のゾーン(例: europe-west1-b,europe-west1-c

REST

インスタント スナップショットからゾーンまたはリージョン ディスクを作成するには、disks.insert メソッドを使用します。

ゾーンディスクを作成する

ソースのインスタント スナップショットを指定して、POST リクエストを発行します。

 POST https://compute.googleapis.com/compute/beta/projects/PROJECT/zones/SOURCE_ZONE/disks/insert
{
 "name": "NEW_DISK_NAME",
 "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME"
}

次のように置き換えます。

  • PROJECT: 新しいディスクを作成するプロジェクト。
  • SOURCE_ZONE: インスタント スナップショットが配置されているゾーン(例: us-central1-a)。ディスクはこのゾーンに作成されます。
  • NEW_DISK_NAME: 新しいディスクの一意の名前。
  • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。

リージョン ディスクを作成する

ソースのインスタント スナップショットとディスクの複製先のゾーンを指定して、POST リクエストを発行します。


POST https://compute.googleapis.com/compute/beta/projects/PROJECT/region/SOURCE_REGION/disks/insert

{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/regions/SOURCE_REGION/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME",
"replicaZones": [
  "projects/PROJECT/zones/ZONE1",
  "projects/PROJECT/zones/ZONE2"
]
}

次のように置き換えます。

  • PROJECT: 新しいディスクを作成するプロジェクト。
  • SOURCE_REGION: インスタント スナップショットが配置されているリージョン。ディスクはこのリージョンに作成されます。
  • NEW_DISK_NAME: 新しいディスクの一意の名前。
  • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。
  • ZONE1,ZONE2: 2 つのディスク レプリカのリージョン内のゾーン(例: europe-west1-beurope-west1-c)。

API リクエスト レスポンス

POST リクエストが成功すると、レスポンスの本文は、ディスクの作成ステータスを取得するためにポーリングできるオブジェクトになります。詳しくは、API レスポンスの処理をご覧ください。

CMEK または CSEK で暗号化されたインスタント スナップショットからディスクを作成する

コンソール

インスタンス スナップショットで Google のデフォルトの暗号化または CMEK 暗号化が使用されている場合、Google Cloud コンソールは、インスタンス スナップショットからディスクを作成するときに暗号鍵を自動的に提供します。インスタント スナップショットが CSEK で暗号化されている場合は、ディスクを作成するための暗号鍵を指定する必要があります。

Google が管理する暗号化の手順に沿って、次の手順で暗号鍵を指定します。

  1. [復号] セクションの [暗号鍵] フィールドに暗号鍵を入力します。
  2. 鍵が RSA 公開鍵でラップされている場合は、[ラップされている鍵] を選択します。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud beta compute disks create コマンドを使用します。

    ソースディスクが CMEK で暗号化されている場合は、--kms-key パラメータを使用して鍵の名前を指定します。

    ソースディスクが CSEK で暗号化されている場合は、--csek-key-file パラメータを使用してソースディスクの暗号鍵を指定します。

    CMEK

    CMEK で暗号化されたインスタント スナップショットからゾーンディスクを作成するには、次のコマンドを使用します。

         gcloud beta compute disks create NEW_DISK_NAME \
           --zone=SOURCE_ZONE \
           --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
           --kms-key=projects/KMS_PROJECT_NAME/locations/KEYRING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    次のように置き換えます。

    • NEW_DISK_NAME: 新しいディスクの名前。
    • SOURCE_ZONE: インスタント スナップショットが保存されているゾーン(例: europe-west1-a)。
    • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。
    • KMS_PROJECT_NAME: 鍵を含むプロジェクト。
    • KEYRING_LOCATION: 鍵が属するキーリングのロケーション。キーリングがグローバルの場合は、global を指定します。それ以外の場合は、キーリングが配置されているリージョンの名前を指定します(例: us-west1)。
    • KEY_RING_NAME: 鍵を含むキーリングの名前(例: key-ring-1)。
    • KEY_NAME: ディスクの暗号化に使用された鍵の名前。

    CSEK

    CSEK で暗号化されたインスタント スナップショットからゾーンディスクを作成するには、次のコマンドを使用します。

         gcloud beta compute disks create NEW_DISK_NAME \
           --zone=SOURCE_ZONE \
           --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
           --csek-key-file=PATH_TO_CSEK_JSON_FILE
     

    次のように置き換えます。

    • NEW_DISK_NAME: 新しいディスクの名前。
    • SOURCE_ZONE: インスタント スナップショットが保存されているゾーン(例: europe-west1-a)。
    • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。
    • CSEK_JSON_FILE: 鍵を含む JSON ファイルへのパス。CSEK ファイル形式の例をご覧ください。

    リージョン ディスクを作成するには、前述の例の --zone フラグを次のフラグに置き換えます。

    • --region: 新しいディスクのリージョン
    • --replica-zones: 2 つのディスク レプリカのリージョン内のゾーン。

REST

CMEK または CSEK で暗号化されたインスタント スナップショットからゾーンディスクまたはリージョン ディスクを作成するには、Google 管理の暗号化セクションに一覧表示されているプロパティを使用して、disk.insert メソッドへの POST リクエストを行います。

また、diskEncryptionKey フィールドでソースディスクの暗号鍵を指定します。diskEncryptionKey フィールドのプロパティは、ディスクが CMEK で暗号化されているか CSEK で暗号化されているかによって異なります。

次の例は、各暗号化タイプに対して新しいゾーンディスクを作成する方法を示しています。

CMEK

リクエスト本文で、diskEncryptionKey.kmsKeyName プロパティを使用して鍵の名前を指定します。

{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME",
"diskEncryptionKey": {
      "kmsKeyName": "projects/KMS_PROJECT/locations/LOCATION/keyRings/KEYRING_LOCATION/cryptoKeys/KEY_NAME"
  }
}

次のように置き換えます。

  • NEW_DISK_NAME: 新しいディスクの一意の名前。
  • PROJECT: 新しいディスクを作成するプロジェクト。
  • SOURCE_ZONE: インスタント スナップショットが配置されているゾーン(例: us-central1-a)。ディスクはこのゾーンに作成されます。
  • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。
  • KMS_PROJECT: 鍵を含むプロジェクト。
  • LOCATION: 鍵が属するキーリングのロケーション。 キーリングがグローバルの場合は、global を指定します。それ以外の場合は、キーリングが配置されているリージョンの名前を指定します(例: us-west1)。
  • KEY_RING: 鍵を含むキーリングの名前(例: key-ring-1)。
  • KEY: ディスクの暗号化に使用された鍵の名前。

CSEK

リクエスト本文は、インスタント スナップショットの暗号化に使用される CSEK が RSA で暗号化されているかどうかによって異なります。

RAW(RSA で暗号化されていない)鍵を使用するには、リクエスト本文の diskEncryptionKey.rawKey プロパティで鍵を指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert
{
  "name": "NEW_DISK_NAME",
  "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME,
  "diskEncryptionKey": {
      "rawKey": "RAW_ENCRYPTION_KEY"
  }
}

以下を対応する値に置き換えます。

  • PROJECT: 新しいディスクを作成するプロジェクト。
  • SOURCE_ZONE: インスタント スナップショットが配置されているゾーン(例: us-central1-a)。ディスクはこのゾーンに作成されます。
  • NEW_DISK_NAME: 新しいディスクの一意の名前。
  • SOURCE_INSTANT_SNAPSHOT_NAME: ソースのインスタント スナップショットの名前。
  • RAW_ENCRYPTION_KEY: インスタンス スナップショットとそのソースディスクの暗号化に使用される鍵(例: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=)。

RSA で暗号化された鍵を使用するには、上記の例を次のように変更します。

  • ベータ版の disks.insert メソッドへの POST リクエストを行います。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/disks/insert
    

  • リクエスト本文の diskEncryptionKey.rsaEncryptedKey プロパティで鍵を指定します。

    "diskEncryptionKey": {
     "rsaEncryptedKey": "RSA_ENCRYPTED_KEY"
    }
    

RSA_ENCRYPTED_KEY は暗号化された鍵に置き換えます。

API リクエスト レスポンス

POST リクエストが成功すると、レスポンスの本文は、ディスクの作成ステータスを取得するためにポーリングできるオブジェクトになります。詳しくは、API レスポンスの処理をご覧ください。