Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁說明如何使用環境快照儲存及載入環境狀態。
您可以將環境設為自動儲存快照。詳情請參閱「設定排程快照」。
關於環境快照
環境快照會儲存環境狀態。您可以視需要儲存及載入環境快照。
快照的用途如下:
- 將環境遷移至較新的 Cloud Composer 或 Airflow 主要版本。
快照的儲存方式
環境快照是一組檔案,用於說明環境狀態及儲存環境資料備份。
您可以建立多個環境快照。環境快照並非增量快照。您可以獨立使用任何快照,不必與其他快照搭配。
刪除環境時,Cloud Composer 不會一併刪除快照。
根據預設,Cloud Composer 會將快照儲存在環境值區的 snapshots/
資料夾中。您也可以在建立快照時指定自訂位置。
為方便起見,Cloud Storage 使用者介面會將資料顯示為資料夾,但 bucket 採用的是一般檔案結構。這不會改變您在 Google Cloud 控制台中儲存及載入快照的方式,但直接對儲存空間中的檔案執行作業時,請留意這點。詳情請參閱「物件命名空間」。
快照的安全考量
為降低這項安全風險,您可以將 Airflow DAG 使用的機密資訊 (例如金鑰或密碼) 儲存在 Secret Manager 中。詳情請參閱「為環境設定 Secret Manager」。
請務必檢查環境值區的安全權限。如果將環境快照儲存在自訂值區中,請確認專案中已正確設定該值區的存取權限。指派權限時,請確認環境的服務帳戶有足夠權限,可從值區儲存及載入快照。
快照會儲存哪些資料
Cloud Composer 會在快照中儲存下列資料:
- Airflow 設定覆寫。
- 環境變數。
- 自訂 PyPI 套件清單 (以需求條件的形式)。
- Airflow 資料庫備份,包括已執行工作的狀態和 DAG 執行記錄。
- 環境值區中
/dags
、/data
和/plugins
資料夾的備份。 - 環境的 Fernet 金鑰。
- 環境設定的其他資訊,例如環境的規模和效能參數。Cloud Composer 載入快照時不會使用這項資訊。
系統會從快照載入哪些資料
Cloud Composer 會從快照載入下列資料:
- Airflow 設定覆寫。
- 環境變數。
自訂 PyPI 套件 (除非您選擇略過安裝程序)。
Airflow 資料庫內容,包括已執行工作的狀態和 DAG 執行記錄。
系統會將快照中的
/dags
、/data
和/plugins
資料夾內容載入環境的 bucket。系統會使用快照中的 Fernet 金鑰,以環境本身的 Fernet 金鑰重新加密快照中的資料。環境的 fernet 金鑰維持不變。
雖然 Cloud Composer 會將環境設定的部分資訊儲存在快照中,但載入快照時不會使用這些資訊。載入快照時,環境的下列參數不會變更:
- 環境設定,例如環境規模和效能參數。
- 環境的網路設定。
- 環境值區中
/dags
、/data
和/plugins
資料夾以外的內容。 - 環境標籤。
如果您在 Cloud Composer 基礎架構中套用任何設定,但未使用 Cloud Composer API,載入快照時可能會遺失這些設定。
關於部分完成的作業
載入快照時,作業可能會成功、失敗或部分完成:
- 成功執行的作業會從快照載入所有資料。
- 失敗的作業不會造成任何變更。
- 部分完成的作業會從快照載入資料子集。這類作業會回報為失敗,但錯誤訊息會指出成功載入的資料。舉例來說,如果已安裝 PyPI 套件,但 Airflow 設定選項覆寫作業失敗,錯誤訊息就會指出這點。
如果作業只完成一部分,您可以嘗試再次載入相同的快照。Cloud Composer 會略過先前嘗試成功執行的步驟。舉例來說,如果作業因逾時而失敗,但資料庫已成功載入,下次嘗試時就不會再次載入資料庫。
事前準備
- 在 Cloud Composer 1 中,您只能儲存快照,但無法載入快照。您可以將 Cloud Composer 1 環境的快照載入 Cloud Composer 2 環境。
Cloud Composer 2 版本 2.0.9 以上支援快照。Cloud Composer 1 支援在 1.18.5 以上版本中儲存環境快照。
快照不會建立環境,如要將環境的快照載入其他環境,請先建立新環境,然後將快照載入該環境。
您無法將快照載入至處於錯誤狀態的環境。載入快照無法修正這類環境。您還是可以將現有快照載入新環境。
支援快照的 Airflow 資料庫大小上限為 20 GB。如果環境的資料庫超過 20 GB,請縮減 Airflow 資料庫的大小,再儲存快照。
如要建立快照,環境值區中
/dags
、/plugins
和/data
資料夾的物件總數必須少於 100,000 個。如果使用 XCom 機制傳輸檔案,請務必按照 Airflow 的指南使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時發生錯誤。請考慮使用 Cloud Storage 等替代方案來移轉大量資料。
環境儲存空間中物件名稱的長度上限為 1024 個符號。否則無法建立快照。
如果將快照儲存在環境值區以外的位置,環境的服務帳戶必須具備指定位置的讀取和寫入權限。舉例來說,Storage 物件管理員角色就具備這類權限。您可以將這項功能套用至專案或特定值區。
建立及儲存快照會產生額外費用,這與 Cloud Storage 相關。詳情請參閱「定價」。
儲存環境快照
Cloud Composer 會將環境快照儲存在您指定的資料夾中,並建立子資料夾。資料夾名稱包含專案 ID、環境位置、環境名稱,以及儲存快照的時間戳記。例如:
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。
主控台
如要建立環境快照,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
按一下「儲存快照」。
在「儲存快照」對話方塊中,選取快照的儲存位置:
如要將快照儲存在環境 bucket 的
/snapshots
資料夾中,請選取「使用環境 bucket 中的快照資料夾 (預設)」。如要將快照儲存在自訂資料夾中,請選取「使用其他值區中的自訂資料夾」,然後指定位置。
按一下 [儲存]。
gcloud
gcloud composer environments snapshots save
指令會儲存環境快照。
snapshot-location
引數會指定儲存快照的資料夾。根據預設,快照會儲存在環境值區的/snapshots
資料夾中。例如:gs://us-central1-example-916807e1-bucket/snapshots
。你也可以指定任何其他資料夾。
如要儲存環境快照,請執行下列指令:
gcloud composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
取代:
- 將
ENVIRONMENT_NAME
替換為環境的名稱。 LOCATION
改成環境所在的地區。- (選用)
SNAPSHOTS_FOLDER
,其中包含要儲存快照的 bucket 資料夾 URI。如果省略這個引數,Cloud Composer 會將快照儲存至環境值區的/snapshots
資料夾。
以下範例使用預設位置:
gcloud composer environments snapshots save \
example-environment \
--location us-central1
以下範例會儲存至自訂資料夾:
gcloud 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/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot
{
"snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}
Terraform
您無法透過 Terraform 儲存及載入環境快照。
儲存及載入快照是在環境中執行的動作,產生的快照不屬於環境定義。由於 Terraform 只管理 Cloud Composer 環境的設定,因此您無法透過 Terraform 儲存或載入環境快照。
載入環境快照
在 Cloud Composer 1 中,您只能儲存快照,但無法載入快照。您可以將 Cloud Composer 1 環境的快照載入 Cloud Composer 2 環境。舉例來說,當您將環境遷移至 Cloud Composer 2 時。