このドキュメントでは、ゾーン Persistent Disk とリージョン Persistent Disk、Google Cloud Hyperdisk のスナップショット スケジュールを管理する方法について説明します。
スナップショット スケジュールは次のように管理できます。
- スナップショット スケジュールを表示する
- スナップショット スケジュールを変更する
- スナップショット スケジュールの削除
スケジュールされたスナップショットのアラートを構成することもできます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
必要なロールと権限
スナップショット スケジュールの作成に必要な権限を取得するには、プロジェクトに関する次の IAM ロールを付与するよう管理者に依頼してください。
- Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) -
サービス アカウントとして実行できる VM に接続する: サービス アカウント ユーザー(v1)(
roles/iam.serviceAccountUser
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、スナップショット スケジュールの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スナップショット スケジュールを作成するには、次の権限が必要です。
-
スナップショット スケジュールを表示するには: プロジェクトまたは組織に対する
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 メソッドのいずれかを使用できます。このリクエストにより、プロジェクト内のすべてのスナップショット スケジュールの名前、説明、リージョンが表示されます。
コンソール
- Google Cloud コンソールで、[スナップショット] ページに移動します。
- [スナップショット スケジュール] タブを選択します。
- [フィルタ] フィールドを使用して、スナップショット スケジュールのリストを絞り込みます。
- スナップショット スケジュールの名前をクリックして、詳細を表示します。
gcloud
スナップショット スケジュールのリストを表示するには、resource-policies list
コマンドを使用します。
gcloud compute resource-policies list
特定のスナップショット スケジュールの説明を表示するには、resource-policies describe
コマンドを使用します。
gcloud compute resource-policies describe SCHEDULE_NAME
SCHEDULE_NAME
は、スナップショット スケジュールの名前に置き換えます。
REST
プロジェクトのスナップショット スケジュールのリストを取得するには、resourcePolicies.aggregatedList
に GET
リクエストを送信します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/resourcePolicies
PROJECT_ID
は、プロジェクト名に置き換えます。
リージョンごとにスナップショット スケジュールを表示する
特定のリージョン内のプロジェクトのスナップショット スケジュールを表示するには、Google Cloud コンソール、gcloud CLI、または REST を使用します。
コンソール
- Google Cloud コンソールで、[スナップショット] ページに移動します。
- [スナップショット スケジュール] タブを選択します。
- [ フィルタ] フィールドを使用して、特定のリージョンのスナップショット スケジュールを一覧取得します。
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 を使用して、スナップショット スケジュールのプロパティの一部を変更できます。
スナップショット スケジュールの他のプロパティを変更するには、スナップショット スケジュールを置き換えるで説明されている方法を使用します。
コンソール
- Google Cloud コンソールで、[スナップショット] ページに移動します。
- [スナップショット スケジュール] を選択してスケジュールのリストを表示します。
- 変更するスナップショット スケジュールの名前をクリックします。
- スナップショット スケジュールの詳細ページで、 [スケジュールを編集] ボタンをクリックします。
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: スナップショット スケジュールの説明。引用符で説明を囲みます。
- KEY と VALUE: 関連リソースまたは関連付けられたリソースのグループ化に使用できる Key-Value ペア。
- DAYS: スナップショットが削除されるまで保持される最大日数。
- DELETE_OPTION: 元のディスクが削除された後の自動スナップショットの保持動作。値は次のいずれかにする必要があります。
apply-retention-policy
: ソースディスクが削除された場合、スナップショット スケジュールによって作成されたスナップショットの保持期間を引き続き適用します。keep-auto-snapshots
: (デフォルト)ソースディスクが削除された場合、保持期間に関係なく、スナップショット スケジュールによって作成されたスナップショットを保持します。
- START_TIME: UTC の開始時刻。開始時刻は正時でなければなりません。例:
- 午後 2 時(PST)は
22:00
です。 - 開始時間を
22:13
に設定すると、エラーが発生します。
- 午後 2 時(PST)は
SCHEDULE_FLAG: 次のいずれかのフラグです。
--hourly-schedule=
HOURLY_INTERVAL
: 各スナップショット間の時間。HOURLY_INTERVAL
には1
~23
の整数を指定してください。たとえば、--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
に設定すると、エラーが発生します。
- 午後 2 時(PST)は
スナップショット頻度のフラグ
hourly-schedule
、daily-schedule
、weekly-schedule
、weekly-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: スナップショット スケジュールの説明。引用符で説明を囲みます。
- KEY と VALUE: 関連リソースまたは関連付けられたリソースのグループ化に使用できる Key-Value ペア。
- HOURLY_INTERVAL: スナップショットを生成する間隔を定義します。時間単位のスケジュールを設定するには、
1
~23
の整数を使用します。スナップショットを毎日同じ時刻に作成するには、24 の約数(1、2、3、4、6、8、12)を選択します。たとえば、--hourly-schedule
を 12 に設定すると、スナップショットは 12 時間ごとに生成されます。 - DAILY_INTERVAL: 各スナップショット間の日数を定義します。 スナップショットを毎日作成するには、値
1
を使用します。 - WEEKLY_INTERVAL: 特定の曜日に実行されるスケジュールを定義します。1 日以上の期間を指定します。
MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
、SATURDAY
、SUNDAY
を使用できます。曜日を指定する必要があります。大文字と小文字は区別されません。dayOfWeeks
には最大 7 つの間隔を定義できます(1 週間の各曜日に 1 つずつ)。 - START_TIME: UTC の開始時刻。開始時刻は正時でなければなりません。例:
- 午後 2 時(PST)は
22:00
UTC です。 - 開始時間を
22:13
に設定すると、エラーが発生します。
- 午後 2 時(PST)は
- DAYS: スナップショットが削除されるまで保持される最大日数。
- DELETE_OPTION: 元のディスクが削除された後の自動スナップショットの保持動作。値は次のいずれかにする必要があります。
APPLY_RETENTION_POLICY
: ソースディスクが削除された場合、スナップショット スケジュールによって作成されたスナップショットの保持期間を引き続き適用します。KEEP_AUTO_SNAPSHOTS
: (デフォルト)ソースディスクが削除された場合、保持期間に関係なく、スナップショット スケジュールによって作成されたスナップショットを保持します。
スナップショット スケジュールを置き換える
スナップショット スケジュールを削除して新しいスケジュールを作成する手順は、次のとおりです。この方法は、スナップショット スケジュールを更新する手順で変更できないスナップショット スケジュールのプロパティを変更します。
すでにディスクに関連付けられているスナップショット スケジュールを置き換える場合は、まずディスクからスケジュールの関連付けを解除して削除する必要があります。その後、新しいスケジュールを作成してディスクに関連付けることができます。
関連付けが解除されたスナップショット スケジュールから生成されたスナップショットは、新しいポリシーで管理されません。これらのスナップショットは、削除するまで無期限に保持されます。
スナップショット スケジュールの削除と置換を行うには、Google Cloud コンソール、gcloud CLI、または REST を使用します。
コンソール
- Google Cloud コンソールで、[ディスク] ページに移動します。
- スケジュールを切断するディスクを選択します。
- [ディスクの管理] ページで、 [編集] をクリックします。必要に応じて、最初に [その他の操作] メニューをクリックします。
- [スナップショット スケジュール] プルダウン メニューを開きます。
- [スケジュールなし] をクリックして、ディスクからスケジュールを切断します。
- 新しいスケジュールを作成します。あるいは、ディスク オプションを編集する際にスケジュールを入れ替えることもできます。
- [保存] をクリックしてタスクを完了します。
gcloud
スケジュールを変更するディスクとスナップショット スケジュールを切断するには、
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
: ゾーンディスクが存在するゾーン
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
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
: このディスクから削除するスナップショット スケジュールの名前
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 メソッドを使用します。スケジュールがすでにディスクに接続されている場合は、まず、ディスクからスケジュールを切断してから、スケジュールを削除します。ディスクに関連付けられているスナップショット スケジュールを削除することはできません。
コンソール
- Google Cloud コンソールで、[スナップショット] ページに移動します。
- [スナップショット スケジュール] を選択してスケジュールのリストを表示します。
- ディスクに関連付けられていないスケジュールを選択します。
[
削除] をクリックします。
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 コンソールの [ロギング] メニューから表示できます。
ログ エクスプローラの使用の詳細については、ログ エクスプローラを使用してログを表示するをご覧ください。
コンソール
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[監査対象リソース] プルダウン リストで [ディスク] をポイントし、[All disk_id] を選択します。
[すべてのログ] プルダウン リストで [cloudaudit.googleapis.com/system_event] を選択し、[OK] をクリックします。
[すべて] プルダウン リストで、ログタイプを選択します。
次のステップ
- スナップショット スケジュールの頻度、保持ポリシー、命名規則についてディスクのスナップショット スケジュールについてで確認する。
- ディスク スナップショットを管理するの説明に沿って、生成されたスナップショットを表示して削除します。
- ログを表示する方法を学習する。