Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面介绍了如何使用以下代码保存和加载环境状态: 环境快照
您可以将环境配置为自动保存快照。有关 相关信息,请参阅配置计划快照。
环境快照简介
环境快照会存储您的环境的状态。您可以保存并 按需加载环境快照。
您可以使用快照执行以下操作:
将您的环境恢复到早期状态。创建备份 环境,然后加载其中一个快照 环境例如,您可以回滚执行 安装 PyPI 软件包或替换 Airflow 配置选项,即使 更改集群名称。
执行并排升级和复制环境。创建 请使用相同或 然后将快照应用于这个新的 环境此过程类似于 迁移。请务必先暂停 DAG 截取快照,以避免重复的 DAG 运行。
快照的存储方式
环境快照是一组文件,用于描述 并存储环境数据的备份。
您可以为自己的环境创建多个快照。环境快照 是非增量的。您可以独立于其他快照使用任何快照。
在您删除实例时,Cloud Composer 不会删除快照, 环境
默认情况下,Cloud Composer 将快照存储在 snapshots/
中
创建文件夹您还可以指定自定义位置
手动创建快照
为了方便起见,Cloud Storage 界面将数据显示为文件夹,但存储分区 以平面文件结构运行这并不会改变 在 Google Cloud 控制台中加载快照,但在执行上述操作时, 直接对存储桶中的文件执行操作。如需更多信息 请参阅对象命名空间。
快照的安全注意事项
为了降低这种安全风险,您可以存储敏感信息 例如密钥或密码 Secret Manager如需了解详情,请参阅 为您的环境配置 Secret Manager。
请务必检查环境存储桶的安全权限。如果您 将环境快照存储在自定义存储桶中,请确保 访问权限,以确保您在 Google Cloud 控制台中 项目。分配权限时,请确保环境服务 账号有足够的权限从 存储桶。
快照中保存哪些数据
Cloud Composer 会将以下数据保存在快照中:
- Airflow 配置替换。
- 环境变量。
- 自定义 PyPI 软件包列表(作为要求)。
- Airflow 数据库的备份,包括已执行任务的状态和 DAG 运行历史记录。
/dags
、/data
和/plugins
文件夹(从 环境的存储桶中。- 环境的 fernet 密钥。
- 有关环境配置的其他信息,例如 环境的规模和性能参数。 Cloud Composer 在加载时不使用此信息 快照。
从快照中加载哪些数据
Cloud Composer 会从快照加载以下数据:
- Airflow 配置替换。
- 环境变量。
自定义 PyPI 软件包(除非您选择跳过安装它们)。
Airflow 数据库的内容,包括已执行任务的状态,以及 DAG 运行历史记录。
快照中
/dags
、/data
和/plugins
文件夹的内容 会加载到环境的存储桶中快照中的铁网络密钥用于重新加密 创建快照此 环境保持不变。
虽然 Cloud Composer 会存储一些 快照中指定的环境配置,加载时不使用 快照。您的环境的以下参数不会改变, 加载快照:
- 环境配置,例如环境规模和性能 参数。
- 环境的网络配置。
/dags
、/data
和/plugins
个文件夹。- 环境标签。
您在 Cloud Composer 基础架构中应用的任何设置 在不使用 Cloud Composer API 的情况下 快照。
关于部分完成的操作
加载快照时,操作可能成功、失败或部分完成 已完成:
- 成功的操作会从快照中加载所有数据。
- 失败的操作不会带来任何变化。
- 部分完成的操作会从快照中加载一部分数据。此类 操作被报告为失败,但错误消息会指示 数据已成功加载。例如,如果安装了 PyPI 软件包, 但 Airflow 配置选项替换未成功,错误 消息指明了这一点。
对于部分完成的操作,您可以尝试加载同一快照 。Cloud Composer 会跳过在 。例如,如果某项操作因超时而失败,但 数据库已成功加载,则下一次尝试不会加载 数据库。
准备工作
Cloud Composer 2 2.0.9 版及更高版本支持快照。 Cloud Composer 1 支持保存 1.18.5 及更高版本的环境快照。
快照不会创建环境。如果您想从以下位置加载快照: 到另一个环境,首先需要创建一个新的 然后将快照加载到其中
您无法将快照加载到处于错误状态的环境。时间是 无法通过加载快照来修复此类环境。您仍然可以 将现有快照加载到新环境中。
您只能将快照加载到 Cloud Composer 或 Airflow。例如,您不能加载 从 Cloud Composer 2.0.2 截取快照 Cloud Composer 2.0.1。再举一个例子,您不能将快照从 Airflow 2.2.3 加载到 Airflow 2.1.4。
快照不会更改 Cloud Composer 版本。如果 将环境升级到 Cloud Composer,然后从早期版本加载快照 您的环境仍会保留其当前版本的 Cloud Composer例如,从 从 Cloud Composer 2.0.1 迁移到 Cloud Composer 2.0.2 时 将环境还原为 Cloud Composer 2.0.1。
支持快照的 Airflow 数据库大小上限为 20 GB。如果环境的数据库占用的空间超过 20 GB, 减小 Airflow 数据库的大小,然后再保存 快照。
环境存储桶中对象名称的最大长度不得为 超过 1024 个符号。否则,无法创建快照。
如果您将快照保存到环境 您的环境的服务账号必须拥有 指定位置的读写权限。例如, Storage Object Admin 角色具有此类权限。您 可以将其应用于项目或特定存储桶。
创建和存储快照会产生额外费用,这与 Cloud Storage如需了解详情,请参阅价格。
保存环境快照
Cloud Composer 会将环境快照保存在
subfolder(相对于您指定的文件夹)。
文件夹名称包含项目 ID、环境位置、
环境名称,以及保存快照时的时间戳。例如:/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。
控制台
如需创建环境的快照,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
点击保存快照。
在保存快照对话框中,选择快照的存储位置:
如需将快照存储在环境
/snapshots
请选择在环境存储桶中使用快照文件夹 (默认)。如需将快照存储在自定义文件夹中,请选择 使用其他存储桶中的自定义文件夹,然后指定位置。
点击保存。
gcloud
gcloud beta composer environments snapshots save
命令会保存您的环境的快照。
snapshot-location
参数指定快照所在的文件夹 已保存。默认情况下,快照保存在您/snapshots
环境的存储桶中。例如gs://us-central1-example-916807e1-bucket/snapshots
。你还可以指定 任何其他文件夹中
如需保存环境的快照,请运行以下命令:
gcloud beta composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。- (可选)将
SNAPSHOTS_FOLDER
替换为用于存储的存储桶文件夹的 URI 快照。如果省略此参数,Cloud Composer 会保存 环境存储桶的/snapshots
文件夹中的快照。
以下示例使用默认位置:
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1
以下示例将保存到自定义文件夹:
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
构建
environments.saveSnapshot
API 请求。在请求正文的
snapshotLocation
字段中,指定 您要保存快照的文件夹。
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
您需要将其中的:
- 将
SNAPSHOTS_FOLDER
替换为存储桶文件夹的 URI 保存快照。
示例:
// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot
{
"snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}
Terraform
无法从 Terraform 保存和加载环境快照。
保存和加载快照是对环境执行的操作, 生成的快照不属于环境定义的一部分。开始时间 Terraform 只管理 Cloud Composer 环境的配置, 您将无法从中保存或加载环境快照。
加载环境快照
请考虑以下情况。例如: 启用 catch-up,且 Airflow 执行 DAG 按照从创建快照到创建快照的时间表 。在这种情况下,加载快照后,Airflow 没有任何信息 所以 Airflow 会再次运行该 DAG 相同的时间和数据
再举一个例子,假设某个 DAG 每天运行一次。您接受了 Airflow 执行此 DAG,然后加载快照 。在这种情况下,即使赶超,Airflow 再次运行该 DAG 已停用。
控制台
如需将快照加载到 Cloud Composer 2 环境中,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击 环境环境详情页面会打开。
点击加载快照。
在加载快照对话框中,点击浏览。
选择一个存储快照的文件夹。文件夹名称会列出 项目 ID、环境的位置以及 已保存快照。例如
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。(可选)要跳过从 Google Cloud 控制台安装自定义 PyPI 软件包, 选择跳过 PyPI 软件包安装。如果您加载 已安装应用的环境的快照 自定义 PyPI 软件包中, 则 Cloud Composer 不会安装这些自定义软件包。
点击加载,然后等待 Cloud Composer 加载快照。
gcloud
gcloud beta composer environments snapshots load
命令会加载
您的环境
--snapshot-path
参数指定快照所在的文件夹 。文件夹名称列出了您的项目 ID、环境 位置和保存快照时的时间戳。例如
gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。(可选)
--skip-pypi-packages-installation
参数会跳过 从快照安装自定义 PyPI 软件包。如果您加载 已安装应用的环境的快照 自定义 PyPI 软件包中, 则 Cloud Composer 不会安装这些自定义软件包。
gcloud beta composer environments snapshots load \
DESTINATION_ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-path "SNAPSHOT_PATH"
您需要将其中的:
- 将
DESTINATION_ENVIRONMENT_NAME
替换为您所在的环境的名称 加载快照 LOCATION
替换为环境所在的区域。- 将
SNAPSHOT_PATH
替换为存储桶的 URI,后跟指向 快照。
示例:
gcloud beta composer environments snapshots load \
example-environment \
--location us-central1 \
--snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"
API
构建
environments.loadSnapshot
API 请求。在请求正文的
snapshotPath
字段中,指定 存储桶的 URI,后跟快照的路径。名称 该文件夹中列出了项目的 ID、环境的位置以及 保存快照时的时间戳。例如gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。(可选)在请求正文的
skipPypiPackagesInstallation
字段中 指定 Cloud Composer 是否必须跳过 从快照安装自定义 PyPI 软件包。如果您加载 已安装应用的环境的快照 自定义 PyPI 软件包中, 则 Cloud Composer 不会安装这些自定义软件包。此字段是可选字段。如果您省略此字段,则 Cloud Composer 通过快照安装 PyPI 软件包。
{
"snapshotPath": "SNAPSHOT_PATH"
}
您需要将其中的:
- 将
SNAPSHOT_PATH
替换为存储桶文件夹的 URI 存储快照。
示例:
// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot
{
"snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
"skipPypiPackagesInstallation": "False"
}
Terraform
无法使用 Terraform 保存和加载环境快照。
保存和加载快照是对环境执行的操作, 生成的快照不属于环境定义的一部分。开始时间 Terraform 只管理 Cloud Composer 环境的配置, 您将无法从中保存或加载环境快照。