This document describes how to manage snapshot schedules for your zonal and regional Persistent Disk and and Google Cloud Hyperdisk.
You can manage snapshot schedules as follows:
- View snapshot schedules
- Change snapshot schedules
- Delete snapshot schedules
You can also configure alerts for scheduled snapshots.
Before you begin
-
If you haven't already, then set up authentication.
Authentication is
the process by which your identity is verified for access to Google Cloud services and APIs.
To run code or samples from a local development environment, you can authenticate to
Compute Engine by selecting one of the following options:
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
Required roles and permissions
To get the permissions that you need to create a snapshot schedule, ask your administrator to grant you the following IAM roles on the project:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
To connect to a VM that can run as a service account:
Service Account User (v1) (
roles/iam.serviceAccountUser
)
For more information about granting roles, see Manage access to projects, folders, and organizations.
These predefined roles contain the permissions required to create a snapshot schedule. To see the exact permissions that are required, expand the Required permissions section:
Required permissions
The following permissions are required to create a snapshot schedule:
-
To view snapshot schedules:
compute.resourcePolicies.list
on the project or organization -
To update a snapshot schedule:
-
compute.resourcePolicies.update
on the resource policy -
compute.resourcePolicies.get
on the resource policy
-
-
To replace a snapshot schedule:
-
compute.resourcePolicies.use
on the resource policy -
compute.disks.addResourcePolicies
on the disk -
compute.disks.removeResourcePolicies
on the disk
-
-
To delete a snapshot schedule:
-
compute.resourcePolicies.delete
on the resource policy -
compute.disks.removeResourcePolicies
on the disk
-
You might also be able to get these permissions with custom roles or other predefined roles.
View snapshot schedules
To get a list of snapshot schedules, use the console, gcloud
command,
or the Compute Engine API method.
This request displays the name, description, and region of all
snapshot schedules within a project.
Console
- In the Google Cloud console, go to the Snapshots page.
- Select the Snapshot schedules tab.
- Use the Filter field to narrow the list of snapshot schedules.
- Click the name of a snapshot schedule to see its details.
gcloud
To see a list of your snapshot schedules, use the
resource-policies list
command.
gcloud compute resource-policies list
To see the description of a specific snapshot schedule, use the
resource-policies describe
command.
gcloud compute resource-policies describe SCHEDULE_NAME
Replace SCHEDULE_NAME
with the name of the snapshot
schedule.
REST
Make a GET
a request to
resourcePolicies.aggregatedList
to return a list of the snapshot schedules for a project.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/resourcePolicies
Replace PROJECT_ID
with the project name.
View snapshot schedules by region
To view the snapshot schedules for a project within a particular region, use the Google Cloud console, gcloud CLI, or REST.
Console
- In the Google Cloud console, go to the Snapshots page.
- Select the Snapshot schedules tab.
- Use the Filter field to list snapshot schedules for a specific region.
gcloud
To view the snapshot schedules for a project within a specific region,
use the
resource-policies list
command.
gcloud compute resource-policies list PROJECT_ID --filter REGION
Replace the following:
PROJECT_ID
: the project nameREGION
: the region, for exampleus-west1
REST
Make a GET
request to
resourcePolicies.list
method
to retrieve the snapshot schedules created within in a region.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
Replace the following:
PROJECT_ID
: the project nameREGION
: the region, for exampleus-west1
Change a snapshot schedule
After you create a snapshot schedule, you can modify the following fields dynamically, using the Update a snapshot schedule procedure:
- Description
- Snapshot schedule
- Labels applied to the generated snapshots
- Source disk deletion policy for handling auto-generated snapshots if the source disk is deleted
- Retention policy to define how long to keep snapshots that are generated from the snapshot schedule
To update other values for a snapshot schedule, you must delete the snapshot schedule and create a new one, as described in Replace a snapshot schedule.
The snapshot schedule updates take effect in the first snapshot after the updates. If a snapshot is running while you update the snapshot schedule, the changes take effect in the following snapshot.
Update a snapshot schedule
You can use Google Cloud CLI or the Compute Engine API to change some of the properties of your snapshot schedule, as described in Change a snapshot schedule.
To change other properties of your snapshot schedule, use the method described in Replace a snapshot schedule.
Console
- In the Google Cloud console, go to the Snapshots page.
- Select Snapshot schedules to see a list of your schedules.
- Click the name of the snapshot schedule that you want to modify.
- On the snapshot schedule detail page, click the Edit schedule button.
gcloud
Use the
compute resource-policies update
command
to update a snapshot schedule's description, schedule, retention policy, or
labels.
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
Replace the following:
- SCHEDULE_NAME: the name of the snapshot schedule.
- REGION: the region where your snapshot schedule resides.
- DESCRIPTION: a description of the snapshot schedule. Use quotes around your description.
- KEY and VALUE: a key-value pair that can be used to group related or associated resources.
- DAYS: Maximum number of days snapshot is retained before being deleted.
- DELETE_OPTION: Retention behavior of automatic
snapshots after the original disk is deleted. The value must be one of:
apply-retention-policy
: When the source disk is deleted, continue to apply the retention window for any snapshots created by the snapshot schedule.keep-auto-snapshots
: (Default) If the source disk is deleted, keep any snapshots created by the snapshot schedule, regardless of the retention window.
- START_TIME: the UTC start time. The time
must start on the hour. For example:
- 2:00 PM PST is
22:00
. - If you set a start time of
22:13
, you will receive an error.
- 2:00 PM PST is
SCHEDULE_FLAG: one of the following flags:
--hourly-schedule=
HOURLY_INTERVAL
: the number of hours between every snapshot. TheHOURLY_INTERVAL
must be an integer between1
and23
. For example, setting--hourly-schedule
to 12, means the snapshot is generated every 12 hours.--daily-schedule
: performs a snapshot daily, at theSTART_TIME
--weekly-schedule=
WEEKLY_INTERVAL
: defines the day you want the snapshotting to occur. You must spell out the week day; the values are not case-sensitive.--weekly-schedule-from-file=
FILE_NAME
: specifies a file that contains the weekly snapshot schedule. You can specify weekly schedules on different days of the week and at different times using a file. For example, your file might specify a snapshot schedule on Monday and Wednesday:none [{"day": "MONDAY", "startTime": "04:00"}, {"day": "WEDNESDAY", "startTime": "02:00"}]
If you include a start time in your file, you don't need to set the--start-time
flag. The schedule uses the UTC time zone. The time must start on the hour. For example:- 2:00 PM PST is
22:00
. - If you set a start time of
22:13
, you will receive an error.
- 2:00 PM PST is
The snapshot frequency flags
hourly-schedule
,daily-schedule
,weekly-schedule
, andweekly-schedule-from-file
are mutually-exclusive. You can use only one for your snapshot schedule.
Examples:
To change a snapshot schedule to a daily schedule:
gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
--region=REGION --daily-schedule --start-time=START_TIME
To change a snapshot to an hourly schedule, and also update the description and snapshot label:
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"
To change a snapshot retention and source disk deletion policies for a snapshot schedule:
gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
--region=REGION --max-retention-days=DAYS \
--on-source-disk-delete=DELETE_OPTION
REST
Construct a PATCH
request to the
resourcePolicies
method
to update a snapshot schedule's description, schedule, retention policy,
source disk deletion policy, or labels. In the request body, you only need
to specify the name
and the fields you want to update.
Change the description and label:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME { "name": "SCHEDULE_NAME", "description": "DESCRIPTION", "snapshotProperties": { "labels": {"KEY": "VALUE"} } }
Change the snapshot schedule to hourly:
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 } } } }
Change the snapshot schedule to daily:
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 } } } }
Change the snapshot schedule to weekly:
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 } ] } } } }
Change the snapshot retention policy:
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" } } }
Replace the following:
- PROJECT_ID: the project name.
- REGION: the region where the snapshot schedule is located.
- SCHEDULE_NAME: the name of the snapshot schedule.
- DESCRIPTION: a description of the snapshot schedule. Use quotes around your description.
- KEY and VALUE: a key- value pair that can be used to group related or associated resources.
- HOURLY_INTERVAL: defines the interval at which
you want snapshotting to occur. Set the hourly schedule using an integer
between
1
and23
. To have the snapshots created at the same time every day, choose a number that divides evenly into 24 (1, 2, 3, 4, 6, 8, or 12). For example, setting--hourly-schedule
to 12, means the snapshot is generated every 12 hours. - DAILY_INTERVAL: defines the number of days
between each snapshot. To create a snapshot every day, use the
value
1
. - WEEKLY_INTERVAL: defines a schedule that runs on
specific days of the week. Specify one or more days. The following
options are available:
MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
,SATURDAY
, andSUNDAY
. You must spell out the week days; they are not case-sensitive. You can define up to 7 intervals fordayOfWeeks
, one for each day of the week. - START_TIME: the UTC start time. The time must
start on the hour. For example:
- 2:00 PM PST is
22:00
UTC. - If you set a start time of
22:13
, you will receive an error.
- 2:00 PM PST is
- DAYS: Maximum number of days snapshot is retained before being deleted.
- DELETE_OPTION: Retention behavior of automatic
snapshots after the original disk is deleted. The value must be one of:
APPLY_RETENTION_POLICY
: When the source disk is deleted, continue to apply the retention window for any snapshots created by the snapshot schedule.KEEP_AUTO_SNAPSHOTS
: (Default) If the source disk is deleted, keep any snapshots created by the snapshot schedule, regardless of the retention window.
Replace a snapshot schedule
Follow these steps to delete the snapshot schedule and create a new one. Use this method to modify snapshot schedule properties that can't be changed by using the update a snapshot schedule procedure.
If you are replacing a snapshot schedule that is already attached to a disk, you must first detach the schedule from the disk and delete it. Then you can create a new schedule, and attach it to the disk.
Snapshots that are generated from the detached snapshot schedule won't be managed by the new policy. Those snapshots will be retained indefinitely until you delete them.
Use the Google Cloud console, gcloud CLI, or REST to remove and replace your snapshot schedule.
Console
- In the Google Cloud console, go to the Disks page.
- Select the disk that has the schedule you want to detach.
- On the Manage disk page, click Edit. You might need to click the More actions menu first.
- Open the Snapshot schedule drop-down menu.
- Click No schedule to detach the schedule from the disk.
- You can create a new schedule, or swap the schedule while you are editing the disk options.
- Click Save to complete the task.
gcloud
Use the
gcloud disks remove-resource-policies
command to detach the snapshot schedule from the disk with the schedule that you want to change.gcloud compute disks remove-resource-policies DISK_NAME \ --resource-policies SCHEDULE_NAME \ --region REGION \ --zone ZONE
Replace the following:
DISK_NAME
: the name of the disk with the snapshot schedule attached to itSCHEDULE_NAME
: the name of the snapshot schedule that you want to detach from this diskREGION
: the region where your snapshot schedule residesZONE
: the zone where your zonal disk resides
Use the
gcloud disks add-resource-policies
command to add the new snapshot schedule to the disk.gcloud compute disks add-resource-policies DISK_NAME \ --resource-policies SCHEDULE_NAME \ --zone ZONE
Replace the following:
DISK_NAME
: the name of the disk with the snapshot schedule resource policySCHEDULE_NAME
: the name of the snapshot schedule that you want to add to this diskZONE
: the zone where your disk resides
REST
Detach the current snapshot schedule from a disk by constructing a
POST
request todisks.removeResourcePolicies
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/removeResourcePolicies { "resourcePolicies": [ "regions/REGION/resourcePolicies/SCHEDULE_NAME" ] }
Replace the following:
PROJECT_ID
: the project nameZONE
: the zone where the disk residesDISK_NAME
: the name of the disk with the associated snapshot scheduleREGION
: the location of the snapshot scheduleSCHEDULE_NAME
: the name of the snapshot schedule that you are removing from this disk
Attach the new snapshot schedule to the disk by constructing a
POST
request to thedisks.addResourcePolicies
method.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/addResourcePolicies { "resourcePolicies": [ "regions/REGION/resourcePolicies/SCHEDULE_NAME" ] }
Replace the following:
PROJECT_ID
: the project nameZONE
: the location of the diskDISK_NAME
: the name of the diskREGION
: the location of the snapshot scheduleSCHEDULE_NAME
: the name of the snapshot schedule that you are applying to this disk
Delete a snapshot schedule
If you delete a snapshot schedule, all auto-generated snapshots associated with the snapshot schedule are kept permanently. However, after the schedule is deleted, it can no longer generate snapshots.
Your retention policy is part of your snapshot schedule. After the schedule is deleted, your retention policy no longer applies. Snapshots that have already been generated are kept permanently until you manually delete them.
To delete an existing snapshot schedule, use the Google Cloud console, Google Cloud CLI, or the Compute Engine API method. If the schedule is already attached to a disk, detach the schedule from the disk first, then delete the schedule. You cannot delete a snapshot schedule that is attached to a disk.
Console
- In the Google Cloud console, go to the Snapshots page.
- Select Snapshot schedules to see a list of your schedules.
- Select any schedule not associated with a disk.
Click
Delete.
gcloud
To delete a snapshot schedule, use the
resource-policies delete
command.
gcloud compute resource-policies delete SCHEDULE_NAME \
--region REGION
Replace the following:
SCHEDULE_NAME
: the name of the snapshot scheduleREGION
: the location of the snapshot schedule
REST
To delete a snapshot schedule, make a DELETE
request to
resourcePolicies.delete
method.
If the snapshot schedule is already attached to a disk, you will receive
an error.
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
Replace the following:
PROJECT_ID
: the project nameREGION
: the location of the snapshot scheduleSCHEDULE_NAME
: the name of the snapshot schedule
Logging and monitoring
Every scheduled snapshot associated with a disk is continuously creating a system event, which is monitored and logged at all times. The system event audit logs are always enabled.
These logs provide behavioral information about your scheduled snapshots for each associated disk. You can view your logs from the Logging menu in the Google Cloud console.
For more information about using the Logs Explorer, see View logs by using the Logs Explorer.
Console
In the Google Cloud console, go to the Logs Explorer page.
In the Audited resource drop-down list, point to Disk and select All disk_id.
In the All logs drop-down list, select cloudaudit.googleapis.com/system_event and click OK.
In the Any log level drop-down list, select the log type.
What's next
- Learn about snapshot schedule frequencies, retention policies, and naming rules in About snapshot schedules for disks.
- View and delete the generated snapshots, as described in Manage disk snapshots.
- Learn how to view logs.