儲存及載入環境快照

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面說明如何使用環境快照儲存及載入環境狀態。

您可以設定環境,自動儲存快照。詳情請參閱「設定排程快照」。

關於環境快照

環境快照會儲存環境狀態。您可以視需求儲存及載入環境快照。

您可以使用快照來執行下列操作:

快照的儲存方式

環境快照是一組檔案,可說明環境狀態,並儲存環境資料的備份。

您可以為環境建立多個快照。環境快照不是增量快照。您可以獨立使用任何快照。

刪除環境時,Cloud Composer 不會刪除快照。

根據預設,Cloud Composer 會將快照儲存在環境值區的 snapshots/ 資料夾中。您也可以在建立快照時指定自訂位置。

雖然 Cloud Storage UI 會以資料夾的形式顯示資料,方便使用者存取,但值區採用的是一般檔案結構。這不會影響您在 Google Cloud 主控台中儲存及載入快照的方式,但請在直接對儲存桶中的檔案執行作業時,留意這項資訊。詳情請參閱「物件命名空間」。

快照的安全性考量

為降低這類安全風險,您可以在 Secret Manager 中儲存 Airflow DAG 使用的機密資訊,例如金鑰或密碼。詳情請參閱「為環境設定 Secret Manager」。

請務必檢查環境值區的安全性權限。如果您將環境快照儲存在自訂值區中,請確認專案中已正確設定存取權限。指派權限時,請確認環境的服務帳戶具備足夠的權限,可從值區儲存及載入快照。

快照檔案儲存的資料

Cloud Composer 會在快照中儲存下列資料:

  • Airflow 設定覆寫。
  • 環境變數。
  • 列出自訂 PyPI 套件 (做為需求)。
  • Airflow 資料庫的備份,包括已執行工作狀態和 DAG 執行記錄。
  • 環境值區中的 /dags/data/plugins 資料夾的備份。
  • 環境的 fernet 金鑰
  • 其他環境設定資訊,例如環境的規模和效能參數。Cloud Composer 在載入快照時不會使用這項資訊。

從快照載入哪些資料

Cloud Composer 會從快照載入下列資料:

  • Airflow 設定覆寫。
  • 環境變數。
  • 自訂 PyPI 套件 (除非您選擇略過安裝)。

  • Airflow 資料庫的內容,包括已執行工作狀態和 DAG 執行記錄。

  • 快照中的 /dags/data/plugins 資料夾內容會載入至環境值區。

  • 快照中的 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

主控台

如要建立環境快照,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 按一下「儲存快照」

  4. 在「Save snapshot」(儲存快照) 對話方塊中,選取快照的儲存位置:

    • 如要在環境值區的 /snapshots 資料夾中儲存快照,請選取「在環境值區中使用快照資料夾 (預設)」

    • 如要在自訂資料夾中儲存快照,請選取「使用其他值區中的自訂資料夾」,然後指定位置。

  5. 按一下 [儲存]

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 與快照儲存位置的值區資料夾 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

  1. 建構 environments.saveSnapshot API 要求。

  2. 在要求主體的 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

後續步驟