Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
This page explains how to configure your environment to save snapshots on a schedule.
For more information about how environment snapshots work and how to save snapshots manually, see Save and load snapshots.
How scheduled snapshots work
When you enable scheduled snapshots, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.
If you create snapshots manually, Cloud Composer saves snapshots in the environment's bucket by default. For scheduled snapshots, we recommend to save snapshots in a separate bucket. This way, you can set up permissions and a lifecycle configuration for this bucket. One bucket can hold snapshots from several environments, and you can also create buckets that are redundant across regions.
Before you begin
For more information about snapshot requirements and limitations, see Save and load snapshots.
Create a bucket for scheduled snapshots
Create a bucket for scheduled snapshots. Consider how you want to use environment snapshots. If it is a part of your disaster recovery plan, then use a bucket that is redundant across regions or a bucket in a different region, so you have access to the data even in case of a full regional outage. Otherwise, a bucket in the same region as the environment might be more suitable, and in this case you reduce the costs of transferring data between regions.
Configure permissions for the bucket
Configure the following permissions:
The service account of your environment must have read and write permissions for this bucket. For example, the Storage Object Admin role has such permissions.
User accounts do not need any additional permissions for the bucket to load snapshots from it, unless you want to view the contents of the bucket from Google Cloud console. In this case a user account must have read permission on the bucket.
Set a lifecycle configuration for the bucket
To save storage costs, you can configure a rule that deletes environment snapshots after a certain period of time.
For example, to automatically delete snapshots older than 30 days:
- Set a lifecycle configuration for the bucket.
- Specify the Delete object action.
- Select Age and 30 days as the condition.
Enable a snapshot schedule for your environment
Console
In Google Cloud console, go to the Environments page.
In the list of environments, click the name of your environment. The Environment details page opens.
Go to the Environment configuration tab.
In Recovery configuration > Snapshot schedule, click Edit. The Snapshot schedule pane opens.
In the Snapshot schedule pane, select Create snapshots periodically, according to the specified schedule.
In the Schedule frequency drop-down list, select daily, weekly, or custom period for snapshots.
You can specify a custom schedule with the unix-cron format. For example, to save snapshots every 30 minutes, specify
*/30 * * * *
.In the Snapshot location field, select the bucket folder where you want to save snapshots.
gcloud
Update your environment configuration. The following arguments define parameters for scheduled snapshots:
--enable-scheduled-snapshot-creation
enables scheduled snapshots.--snapshot-location
specifies a bucket folder where you want to save snapshots.--snapshot-creation-schedule
specifies how often environment snapshots must be taken, in the unix-cron format. For example, to create a snapshot every 30 minutes, specify*/30 * * * *
.--snapshot-schedule-timezone
defines a time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are fromUTC-12
toUTC+12
. Examples:UTC
,UTC-01
,UTC+03
.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-scheduled-snapshot-creation \
--snapshot-location "gs://SNAPSHOTS_FOLDER" \
--snapshot-creation-schedule "CRON_EXPRESSION" \
--snapshot-schedule-timezone "TIME_ZONE"
Replace:
ENVIRONMENT_NAME
with the name of the environment.LOCATION
with the region where the environment is located.SNAPSHOTS_FOLDER
with the URI of a bucket folder where to save the snapshot.CRON_EXPRESSION
with the schedule, in the unix-cron format.TIME_ZONE
with a time zone for the schedule.
Example (every day at 4:00, UTC+01):
gcloud composer environments update example-environment \
--location us-central1 \
--enable-scheduled-snapshot-creation \
--snapshot-location "gs://example-bucket/environment_snapshots" \
--snapshot-creation-schedule "0 4 * * *" \
--snapshot-schedule-timezone "UTC+01"
API
Construct an environments.patch
API request.
In this request:
In the
updateMask
parameter, specify theconfig.recoveryConfig.scheduledSnapshotsConfig
mask to replace the existing scheduled snapshots configuration.In the request body, specify the configuration for snapshots:
{ "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": true, "snapshot_location": "gs://SNAPSHOTS_FOLDER", "snapshot_creation_schedule": "CRON_EXPRESSION", "time_zone": "TIME_ZONE" } } } }
Replace:
SNAPSHOTS_FOLDER
with the URI of a bucket folder where to save the snapshot.CRON_EXPRESSION
with the schedule, in the unix-cron format.TIME_ZONE
with a time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are fromUTC-12
toUTC+12
. Examples:UTC
,UTC-01
,UTC+03
.
Example (every day at 4:00, UTC+01):
// PATCH https://composer.googleapis.com/v1/projects/example-project/ // locations/us-central1/environments/example-environment?updateMask= // config.recoveryConfig.scheduledSnapshotsConfig { "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": true, "snapshot_location": "gs://example-bucket/environment_snapshots", "snapshot_creation_schedule": "0 4 * * *", "time_zone": "UTC+01" } } } }
Terraform
The scheduled_snapshots_config
in the recovery_config
block defines
parameters for scheduled snapshots:
enabled
enables scheduled snapshots.snapshot_location
specifies a bucket folder where you want to save snapshots.snapshot_creation_schedule
specifies how often environment snapshots must be taken, in the unix-cron format. For example, to create a snapshot every 30 minutes, specify*/30 * * * *
.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
recovery_config {
scheduled_snapshots_config {
enabled = true
snapshot_location = "gs://SNAPSHOTS_FOLDER"
snapshot_creation_schedule = "CRON_EXPRESSION"
time_zone = "TIME_ZONE"
}
}
}
Replace:
SNAPSHOTS_FOLDER
with the URI of a bucket folder where to save the snapshot.CRON_EXPRESSION
with the schedule, in the unix-cron format.TIME_ZONE
with a time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are fromUTC-12
toUTC+12
. Examples:UTC
,UTC-01
,UTC+03
.
Example (every day at 4:00, UTC+01):
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
recovery_config {
scheduled_snapshots_config {
enabled = true
snapshot_location = "gs://example-bucket/environment_snapshots"
snapshot_creation_schedule = "0 4 * * *"
time_zone = "UTC+01"
}
}
}
Disable scheduled snapshots
If you disable scheduled snapshots, all existing snapshots that were already taken are not modified or removed. These snapshots remain in the location where they were saved.
Console
In Google Cloud console, go to the Environments page.
In the list of environments, click the name of your environment. The Environment details page opens.
Go to the Environment configuration tab.
In Recovery configuration > Snapshot schedule, click Edit. The Snapshot schedule pane opens.
In the Snapshot schedule pane, select Do not create snapshots automatically.
gcloud
Update your environment configuration. The
--disable-scheduled-snapshot-creation
argument disables scheduled
snapshots.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-scheduled-snapshot-creation
Replace:
ENVIRONMENT_NAME
with the name of the environment.LOCATION
with the region where the environment is located.
Example:
gcloud composer environments update example-environment \
--location us-central1 \
--disable-scheduled-snapshot-creation
API
Construct an environments.patch
API request.
In this request:
In the
updateMask
parameter, specify theconfig.recoveryConfig.scheduledSnapshotsConfig.enabled
mask to replace the value of theenabled
field.In the request body, specify the new value:
{ "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": false } } } }
Example:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.recoveryConfig.scheduledSnapshotsConfig.enabled
{
"config": {
"recoveryConfig": {
"scheduledSnapshotsConfig": {
"enabled": false
}
}
}
}
Terraform
To disable scheduled snapshots, set the enabled
field in the
scheduled_snapshots_config
block to false
:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
recovery_config {
scheduled_snapshots_config {
enabled = false
}
}
}
Example:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
recovery_config {
scheduled_snapshots_config {
enabled = false
// Other scheduled snapshots parameters
}
}
}