Managed Airflow(第 3 代) | 托管式 Airflow 第 2 代 | 托管式 Airflow(旧版第 1 代)
本页面介绍了如何配置环境以按时间表保存快照。
如需详细了解环境快照的工作原理以及如何手动保存 快照,请参阅保存和加载快照。
计划快照的工作原理
如果您启用计划快照,Managed Airflow 会定期将您环境的快照保存到 Cloud Storage 存储桶。
如果您手动创建快照,Managed Airflow 默认会将快照保存在环境的存储桶中。对于计划快照,我们建议将快照保存在单独的存储桶中。这样,您就可以为此存储桶设置权限和生命周期配置。一个存储桶可以保存 来自多个环境的快照,您还可以创建 跨区域冗余的存储桶。
准备工作
如需详细了解快照的要求和限制,请参阅 保存和加载快照。
为计划快照创建存储桶
创建存储桶以用于计划快照。考虑一下您希望如何使用环境快照。如果它是您的 灾难恢复计划的一部分,请使用跨区域冗余的 存储桶或不同区域中的 存储桶,这样即使在整个区域发生 服务中断的情况下,您也可以访问数据。否则,与环境位于同一区域的存储桶可能更适合,在这种情况下,您可以降低区域间数据传输的费用。
配置存储桶的权限
配置以下权限:
您环境的服务账号必须对此存储桶具有读取 和写入权限。例如, Storage Object Admin 角色具有此类权限。
用户账号无需任何额外的存储桶权限即可从中加载快照,除非您想从 Google Cloud 控制台查看存储桶的内容。在这种情况下,用户账号必须对存储桶具有读取权限。
为存储桶设置生命周期配置
为节省存储费用,您可以配置一条规则,在一定时间后删除环境快照。
例如,如需自动删除保留时长超过 30 天的快照,请执行以下操作:
- 为存储桶设置生命周期配置。
- 指定删除对象 操作。
- 选择存在时间 并将条件设置为 30 天。
为环境启用快照时间表
控制台
在 Google Cloud 控制台中,前往环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
转到环境配置 标签页。
在恢复配置 > 快照时间表中,点击 修改。快照时间表 窗格会打开。
在快照时间表 窗格中,选择根据指定的时间表定期创建快照 。
在时间表频率 下拉列表中,为快照选择每天、每周或自定义时间段。
您可以使用 unix-cron 格式指定自定义时间表。例如,如需每 30 分钟保存一次快照,请指定
*/30 * * * *。在快照位置 字段中,选择要将快照保存到的存储桶文件夹。
gcloud
更新环境配置。以下参数定义了计划快照的参数:
--enable-scheduled-snapshot-creation用于启用计划快照。--snapshot-location用于指定要将快照保存到的存储桶文件夹。--snapshot-creation-schedule用于指定必须以 unix-cron 格式创建环境快照的频率。 例如,如需每 30 分钟创建一个快照,请指定*/30 * * * *。--snapshot-schedule-timezone用于定义时间表的时区。此值是时间偏移值,不考虑夏令时变更。有效值介于UTC-12和UTC+12之间。示例: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"
替换:
ENVIRONMENT_NAME替换为环境的名称。LOCATION替换为环境所在的区域。SNAPSHOTS_FOLDER替换为要将快照保存到的存储桶文件夹的 URI。CRON_EXPRESSION替换为时间表,采用 unix-cron 格式。TIME_ZONE替换为时间表的时区。
示例(每天 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
构建 environments.patch API 请求。
在此请求中:
在
updateMask参数中,指定config.recoveryConfig.scheduledSnapshotsConfig掩码以替换现有的计划快照配置。在请求正文中,指定快照的配置:
{ "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": true, "snapshot_location": "gs://SNAPSHOTS_FOLDER", "snapshot_creation_schedule": "CRON_EXPRESSION", "time_zone": "TIME_ZONE" } } } }替换:
SNAPSHOTS_FOLDER替换为要将快照保存到的存储桶文件夹的 URI。CRON_EXPRESSION替换为时间表,采用 unix-cron 格式。TIME_ZONE替换为时间表的时区。此值是时间偏移值,不考虑夏令时变更。有效值介于UTC-12和UTC+12之间。示例:UTC、UTC-01、UTC+03。
示例(每天 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
recovery_config 块中的 scheduled_snapshots_config 用于定义计划快照的参数:
enabled用于启用计划快照。snapshot_location用于指定要将快照保存到的存储桶文件夹。snapshot_creation_schedule用于指定必须以 unix-cron 格式创建环境快照的频率。 例如,如需每 30 分钟创建一个快照,请指定*/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"
}
}
}
替换:
SNAPSHOTS_FOLDER替换为要将快照保存到的存储桶文件夹的 URI。CRON_EXPRESSION替换为时间表,采用 unix-cron 格式。TIME_ZONE替换为时间表的时区。此值是时间偏移值,不考虑夏令时变更。有效值介于UTC-12和UTC+12之间。示例:UTC、UTC-01、UTC+03。
示例(每天 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"
}
}
}
停用计划快照
如果您停用计划快照,系统不会修改或移除已拍摄的所有现有快照。这些快照仍保留在保存位置。
控制台
在 Google Cloud 控制台中,前往环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
转到环境配置 标签页。
在恢复配置 > 快照时间表中,点击 修改。快照时间表 窗格会打开。
在快照时间表 窗格中,选择不自动创建快照 。
gcloud
更新环境配置。--disable-scheduled-snapshot-creation 参数用于停用计划快照。
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-scheduled-snapshot-creation
替换:
ENVIRONMENT_NAME替换为环境的名称。LOCATION替换为环境所在的区域。
示例:
gcloud composer environments update example-environment \
--location us-central1 \
--disable-scheduled-snapshot-creation
API
构建 environments.patch API 请求。
在此请求中:
在
updateMask参数中,指定config.recoveryConfig.scheduledSnapshotsConfig.enabled掩码以替换enabled字段的值。在请求正文中,指定新值:
{ "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": false } } } }
示例:
// 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
如需停用计划快照,请将 scheduled_snapshots_config 块中的 enabled 字段设置为 false:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
recovery_config {
scheduled_snapshots_config {
enabled = false
}
}
}
示例:
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
}
}
}