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


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

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

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、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. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

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

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロールと権限

インスタント スナップショットからディスクを作成するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、インスタント スナップショットからディスクを作成するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

インスタント スナップショットからディスクを作成するには、次の権限が必要です。

  • ディスクを作成するには:
    • 新しいディスクの宛先プロジェクトに対する compute.disks.create
    • ソースのインスタント スナップショットに対する compute.instantSnapshots.useReadOnly

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

制限事項

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

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

  • インスタント スナップショットから 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 Console で、[スナップショット] ページに移動します。

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

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

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

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

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

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

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

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

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

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

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

gcloud

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

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

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

gcloud 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 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/v1/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/v1/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

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

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

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

CMEK

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

     gcloud 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 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 管理の暗号化セクションに一覧表示されているプロパティを使用して、disks.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/v1/projects/PROJECT_ID/zones/ZONE/disks/insert
    

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

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

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

API リクエスト レスポンス

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