ディスクのスナップショット スケジュールを管理する


このドキュメントでは、ゾーン Persistent Disk とリージョン Persistent DiskGoogle Cloud Hyperdisk のスナップショット スケジュールを管理する方法について説明します。

スナップショット スケジュールは次のように管理できます。

  • スナップショット スケジュールを表示する
  • スナップショット スケジュールを変更する
  • スナップショット スケジュールの削除

スケジュールされたスナップショットのアラートを構成することもできます。

始める前に

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

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

    コンソール

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

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

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

    REST

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

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

必要なロールと権限

スナップショット スケジュールの作成に必要な権限を取得するには、プロジェクトに関する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセス権の管理をご覧ください。

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

必要な権限

スナップショット スケジュールを作成するには、次の権限が必要です。

  • スナップショット スケジュールを表示するには: プロジェクトまたは組織に対する compute.resourcePolicies.list 権限
  • スナップショット スケジュールを更新するには:
    • リソース ポリシーに対する compute.resourcePolicies.update 権限
    • リソース ポリシーに対する compute.resourcePolicies.get 権限
  • スナップショット スケジュールを置き換えるには:
    • リソース ポリシーに対する compute.resourcePolicies.use 権限
    • ディスクに対する compute.disks.addResourcePolicies 権限
    • ディスクに対する compute.disks.removeResourcePolicies 権限
  • スナップショット スケジュールを削除するには:
    • リソース ポリシーに対する compute.resourcePolicies.delete 権限
    • ディスクに対する compute.disks.removeResourcePolicies 権限

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

スナップショット スケジュールを表示する

スナップショット スケジュールのリストを取得するには、コンソール、gcloud コマンド、Compute Engine API メソッドのいずれかを使用できます。このリクエストにより、プロジェクト内のすべてのスナップショット スケジュールの名前、説明、リージョンが表示されます。

コンソール

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

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

  2. [スナップショット スケジュール] タブを選択します。
  3. [フィルタ] フィールドを使用して、スナップショット スケジュールのリストを絞り込みます。
  4. スナップショット スケジュールの名前をクリックして、詳細を表示します。

gcloud

スナップショット スケジュールのリストを表示するには、resource-policies list コマンドを使用します。

 gcloud compute resource-policies list

特定のスナップショット スケジュールの説明を表示するには、resource-policies describe コマンドを使用します。

gcloud compute resource-policies describe SCHEDULE_NAME

SCHEDULE_NAME は、スナップショット スケジュールの名前に置き換えます。

REST

プロジェクトのスナップショット スケジュールのリストを取得するには、resourcePolicies.aggregatedListGET リクエストを送信します。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/resourcePolicies

PROJECT_ID は、プロジェクト名に置き換えます。

リージョンごとにスナップショット スケジュールを表示する

特定のリージョン内のプロジェクトのスナップショット スケジュールを表示するには、Google Cloud コンソール、gcloud CLI、または REST を使用します。

コンソール

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

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

  2. [スナップショット スケジュール] タブを選択します。
  3. [フィルタ] フィールドを使用して、特定のリージョンのスナップショット スケジュールを一覧表示します。

gcloud

特定のリージョン内のプロジェクトのスナップショット スケジュールを表示するには、resource-policies list コマンドを使用します。

gcloud compute resource-policies list PROJECT_ID --filter REGION

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

  • PROJECT_ID: プロジェクト名
  • REGION: リージョン(例: us-west1

REST

resourcePolicies.list メソッドGET リクエストを送信して、リージョン内で作成されたスナップショット スケジュールを取得します。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

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

  • PROJECT_ID: プロジェクト名
  • REGION: リージョン(例: us-west1

スナップショット スケジュールを変更する

スナップショット スケジュールを作成したら、スナップショット スケジュールの更新の手順に沿って、次のフィールドを動的に変更できます。

  • 説明
  • スナップショット スケジュール
  • 生成されたスナップショットに適用されるラベル
  • ソースディスク削除ポリシー(ソースディスクが削除された場合、自動生成されたスナップショットを処理するためのポリシー)
  • 保持ポリシーを使用すると、スナップショット スケジュールによって生成されたスナップショットの保持期間を定義できます。

スナップショット スケジュールの他の値を更新するには、スナップショット スケジュールを置き換えるで説明されているように、スナップショット スケジュールを削除して新しいスケジュールを作成する必要があります。

スナップショット スケジュールの更新は、更新後の最初のスナップショットで有効になります。スナップショット スケジュールの更新中にスナップショットが実行されている場合、変更は次のスナップショットで有効になります。

スナップショット スケジュールの更新

スナップショット スケジュールを変更するで説明されているように、Google Cloud CLI または Compute Engine API を使用して、スナップショット スケジュールのプロパティの一部を変更できます。

スナップショット スケジュールの他のプロパティを変更するには、スナップショット スケジュールを置き換えるで説明されている方法を使用します。

コンソール

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

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

  2. [スナップショット スケジュール] を選択してスケジュールのリストを表示します。
  3. 変更するスナップショット スケジュールの名前をクリックします。
  4. スナップショット スケジュールの詳細ページで、 [スケジュールを編集] ボタンをクリックします。

gcloud

compute resource-policies update コマンドを使用して、スナップショット スケジュールの説明、スケジュール、保持ポリシー、ラベルを更新します。

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
   --region=REGION \
   --description="DESCRIPTION" \
   --snapshot-labels="KEY=VALUE" \
   --max-retention-days=DAYS \
   --on-source-disk-delete=DELETE_OPTION \
   --start-time=START_TIME \
   SCHEDULE_FLAG

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

  • SCHEDULE_NAME: スナップショット スケジュールの名前。
  • REGION: スナップショット スケジュールが存在するリージョン。
  • DESCRIPTION: スナップショット スケジュールの説明。引用符で説明を囲みます。
  • KEYVALUE: 関連リソースまたは関連付けられたリソースのグループ化に使用できる Key-Value ペア。
  • DAYS: スナップショットが削除されるまで保持される最大日数。
  • DELETE_OPTION: 元のディスクが削除された後の自動スナップショットの保持動作。値は次のいずれかにする必要があります。
    • apply-retention-policy: ソースディスクが削除された場合、スナップショット スケジュールによって作成されたスナップショットの保持期間を引き続き適用します。
    • keep-auto-snapshots: (デフォルト)ソースディスクが削除された場合、保持期間に関係なく、スナップショット スケジュールによって作成されたスナップショットを保持します。
  • START_TIME: UTC の開始時刻。開始時刻は正時でなければなりません。例:
    • 午後 2 時(PST)は 22:00 です。
    • 開始時間を 22:13 に設定すると、エラーが発生します。
  • SCHEDULE_FLAG: 次のいずれかのフラグです。

    • --hourly-schedule=HOURLY_INTERVAL: 各スナップショット間の時間。HOURLY_INTERVALには 123 の整数を指定してください。たとえば、--hourly-schedule を 12 に設定すると、スナップショットは 12 時間ごとに生成されます。
    • --daily-schedule: START_TIME にスナップショットを毎日実行します。
    • --weekly-schedule=WEEKLY_INTERVAL: スナップショットを作成する曜日を定義します。曜日を指定する必要があります。値では大文字と小文字は区別されません。

    • --weekly-schedule-from-file=FILE_NAME: 週次スナップショット スケジュールを含むファイルを指定します。ファイルを使用して、曜日ごとに異なる開始時刻を設定した週単位スケジュールを指定できます。たとえば、ファイルには、月曜日と水曜日のスナップショット スケジュールを none [{"day": "MONDAY", "startTime": "04:00"}, {"day": "WEDNESDAY", "startTime": "02:00"}] のように指定できます。開始時間をファイルに含める場合、--start-time フラグを設定する必要はありません。スケジュールでは UTC タイムゾーンが使用されます。開始時刻は正時でなければなりません。次に例を示します。

      • 午後 2 時(PST)は 22:00 です。
      • 開始時間を 22:13 に設定すると、エラーが発生します。

    スナップショット頻度のフラグ hourly-scheduledaily-scheduleweekly-scheduleweekly-schedule-from-file は相互に排他的です。スナップショット スケジュールに使用できるのは 1 つだけです。

例:

スナップショット スケジュールを日単位のスケジュールに変更するには、次のコマンドを使用します。

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
    --region=REGION --daily-schedule --start-time=START_TIME

スナップショットを時間単位のスケジュールに変更し、説明とスナップショット ラベルも更新するには、次のコマンドを使用します。

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
    --region=REGION --description="DESCRIPTION" \
    --hourly-schedule=HOURLY_INTERVAL --start-time=START_TIME \
    --snapshot-labels="KEY=VALUE"

スナップショット スケジュールのスナップショット保持ポリシーとソースディスク削除ポリシーを変更するには:

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
    --region=REGION --max-retention-days=DAYS \
    --on-source-disk-delete=DELETE_OPTION

REST

resourcePolicies メソッドに対する PATCH リクエストを作成して、スナップショット スケジュールの説明、スケジュール、保持ポリシー、ソースディスク削除ポリシー、またはラベルを更新します。リクエストの本文で指定する必要があるのは、name と更新するフィールドのみです。

  • 説明とラベルを変更します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "description": "DESCRIPTION",
        "snapshotProperties": {
            "labels": {"KEY": "VALUE"}
        }
    }
    
  • スナップショット スケジュールを時間単位に変更します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "schedule": {
              "hourlySchedule": {
                  "hoursInCycle": HOURLY_INTERVAL,
                  "startTime": START_TIME
               }
            }
        }
    }
    
  • スナップショット スケジュールを日単位に変更します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "schedule": {
              "dailySchedule": {
                  "daysInCycle": DAILY_INTERVAL,
                  "startTime": START_TIME
               }
            }
        }
    }
    
  • スナップショット スケジュールを週単位に変更します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "schedule": {
               "weeklySchedule": {
                  "dayOfWeeks": [
                     {
                        "day": WEEKLY_INTERVAL,
                        "startTime": START_TIME
                     }
                  ]
               }
            }
        }
    }
    
  • スナップショット保持ポリシーを変更します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "retentionPolicy": {
                "maxRetentionDays": DAYS,
                "onSourceDiskDelete":"DELETE_OPTION"
            }
       }
    }
    

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

  • PROJECT_ID: プロジェクト名。
  • REGION: スナップショット スケジュールが配置されているリージョン。
  • SCHEDULE_NAME: スナップショット スケジュールの名前。
  • DESCRIPTION: スナップショット スケジュールの説明。引用符で説明を囲みます。
  • KEYVALUE: 関連リソースまたは関連付けられたリソースのグループ化に使用できる Key-Value ペア。
  • HOURLY_INTERVAL: スナップショットを生成する間隔を定義します。時間単位のスケジュールを設定するには、123 の整数を使用します。スナップショットを毎日同じ時刻に作成するには、24 の約数(1、2、3、4、6、8、12)を選択します。たとえば、--hourly-schedule を 12 に設定すると、スナップショットは 12 時間ごとに生成されます。
  • DAILY_INTERVAL: 各スナップショット間の日数を定義します。 スナップショットを毎日作成するには、値 1 を使用します。
  • WEEKLY_INTERVAL: 特定の曜日に実行されるスケジュールを定義します。1 日以上の期間を指定します。MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY を使用できます。曜日を指定する必要があります。大文字と小文字は区別されません。dayOfWeeks には最大 7 つの間隔を定義できます(1 週間の各曜日に 1 つずつ)。
  • START_TIME: UTC の開始時刻。開始時刻は正時でなければなりません。例:
    • 午後 2 時(PST)は 22:00 UTC です。
    • 開始時間を 22:13 に設定すると、エラーが発生します。
  • DAYS: スナップショットが削除されるまで保持される最大日数。
  • DELETE_OPTION: 元のディスクが削除された後の自動スナップショットの保持動作。値は次のいずれかにする必要があります。
    • APPLY_RETENTION_POLICY: ソースディスクが削除された場合、スナップショット スケジュールによって作成されたスナップショットの保持期間を引き続き適用します。
    • KEEP_AUTO_SNAPSHOTS: (デフォルト)ソースディスクが削除された場合、保持期間に関係なく、スナップショット スケジュールによって作成されたスナップショットを保持します。

スナップショット スケジュールを置き換える

スナップショット スケジュールを削除して新しいスケジュールを作成する手順は、次のとおりです。この方法は、スナップショット スケジュールを更新する手順で変更できないスナップショット スケジュールのプロパティを変更します。

すでにディスクに関連付けられているスナップショット スケジュールを置き換える場合は、まずディスクからスケジュールの関連付けを解除して削除する必要があります。その後、新しいスケジュールを作成してディスクに関連付けることができます。

関連付けが解除されたスナップショット スケジュールから生成されたスナップショットは、新しいポリシーで管理されません。これらのスナップショットは、削除するまで無期限に保持されます。

スナップショット スケジュールの削除と置換を行うには、Google Cloud コンソール、gcloud CLI、または REST を使用します。

コンソール

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] ページに移動

  2. スケジュールを切断するディスクを選択します。
  3. [ディスクの管理] ページで、 [編集] をクリックします。必要に応じて、最初に [その他の操作] メニューをクリックします。
  4. [スナップショット スケジュール] プルダウン メニューを開きます。
  5. [スケジュールなし] をクリックして、ディスクからスケジュールを切断します。
  6. 新しいスケジュールを作成します。あるいは、ディスク オプションを編集する際にスケジュールを入れ替えることもできます。
  7. [保存] をクリックしてタスクを完了します。

gcloud

  1. スケジュールを変更するディスクとスナップショット スケジュールを切断するには、gcloud disks remove-resource-policies コマンドを使用します。

    gcloud compute disks remove-resource-policies DISK_NAME \
        --resource-policies SCHEDULE_NAME \
        --region REGION \
        --zone ZONE
    

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

    • DISK_NAME: スナップショット スケジュールが接続されているディスクの名前
    • SCHEDULE_NAME: このディスクを切断するスナップショット スケジュールの名前
    • REGION: スナップショット スケジュールが存在するリージョン
    • ZONE: ゾーンディスクが存在するゾーン
  2. gcloud disks add-resource-policies コマンドを使用して、新しいスナップショット スケジュールをディスクに追加します。

    gcloud compute disks add-resource-policies DISK_NAME \
         --resource-policies SCHEDULE_NAME \
         --zone ZONE
    

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

    • DISK_NAME: スナップショット スケジュール リソース ポリシーを含むディスクの名前
    • SCHEDULE_NAME: このディスクに追加するスナップショット スケジュールの名前
    • ZONE: ディスクが存在するゾーン

REST

  1. disks.removeResourcePolicies に対する POST リクエストを作成して、現在のスナップショット スケジュールをディスクから切断します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/removeResourcePolicies
    
    {
      "resourcePolicies": [
         "regions/REGION/resourcePolicies/SCHEDULE_NAME"
      ]
    }
    

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

    • PROJECT_ID: プロジェクト名
    • ZONE: ディスクが存在するゾーン
    • DISK_NAME: スナップショット スケジュールが関連付けられているディスクの名前
    • REGION: スナップショット スケジュールのロケーション
    • SCHEDULE_NAME: このディスクから削除するスナップショット スケジュールの名前
  2. disks.addResourcePolicies メソッドに対する POST リクエストを作成して、新しいスナップショット スケジュールをディスクに接続します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/addResourcePolicies
    
    {
      "resourcePolicies": [
        "regions/REGION/resourcePolicies/SCHEDULE_NAME"
      ]
    }
    

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

    • PROJECT_ID: プロジェクト名
    • ZONE: ディスクのロケーション
    • DISK_NAME: ディスクの名前
    • REGION: スナップショット スケジュールのロケーション
    • SCHEDULE_NAME: このディスクに適用するスナップショット スケジュールの名前

スナップショット スケジュールの削除

スナップショット スケジュールを削除すると、そのスナップショット スケジュールに関連付けられている、自動生成されたすべてのスナップショットが永久に保持されます。ただし、スケジュールが削除された後は、スナップショットを生成できなくなります。

保持ポリシーはスナップショット スケジュールの一部となっています。スケジュールが削除されると、保持ポリシーが適用されなくなります。すでに生成されたスナップショットは、手動で削除するまで永久に保持されます。

既存のスナップショット スケジュールを削除するには、Google Cloud コンソール、Google Cloud CLI、または Compute Engine API メソッドを使用します。スケジュールがすでにディスクに接続されている場合は、まず、ディスクからスケジュールを切断してから、スケジュールを削除します。ディスクに関連付けられているスナップショット スケジュールを削除することはできません。

コンソール

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

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

  2. [スナップショット スケジュール] を選択してスケジュールのリストを表示します。
  3. ディスクに関連付けられていないスケジュールを選択します。
  4. [ 削除] をクリックします。

gcloud

スナップショット スケジュールを削除するには、resource-policies delete コマンドを使用します。

gcloud compute resource-policies delete SCHEDULE_NAME \
    --region REGION

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

  • SCHEDULE_NAME: スナップショット スケジュールの名前
  • REGION: スナップショット スケジュールのロケーション

REST

スナップショット スケジュールを削除するには、resourcePolicies.delete メソッドDELETE リクエストを送信します。スナップショット スケジュールがすでにディスクに接続されている場合は、エラーが返されます。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME

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

  • PROJECT_ID: プロジェクト名
  • REGION: スナップショット スケジュールのロケーション
  • SCHEDULE_NAME: スナップショット スケジュールの名前

ロギングとモニタリング

ディスクに関連付けられたすべてのスケジュール済みスナップショットは、常にモニタリングおよび記録されるシステムイベントを作成し続けます。システム イベント監査ログは常に有効になります。

これらのログは、関連付けされた各ディスクのスケジュール済みスナップショットに関する動作情報を提供します。ログは、Google Cloud コンソールの [ロギング] メニューから表示できます。

ログ エクスプローラの使用の詳細については、ログ エクスプローラを使用してログを表示するをご覧ください。

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] ページに移動

  2. [監査対象リソース] プルダウン リストで [ディスク] をポイントし、[All disk_id] を選択します。

  3. [すべてのログ] プルダウン リストで [cloudaudit.googleapis.com/system_event] を選択し、[OK] をクリックします。

  4. [すべて] プルダウン リストで、ログタイプを選択します。

次のステップ