Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明如何設定環境,以便依排程儲存快照。
如要進一步瞭解環境快照的運作方式,以及如何手動儲存快照,請參閱「儲存及載入快照」。
排程快照的運作方式
啟用根據排程建立快照的功能後,Cloud Composer 會定期將環境快照儲存至 Cloud Storage 值區。
如果您手動建立快照,Cloud Composer 預設會將快照儲存在環境的值區中。如果是排程快照,建議您將快照儲存在不同的值區。這樣就能為這個 bucket 設定權限和生命週期設定。一個值區可存放多個環境的快照,您也可以建立跨區域備援的值區。
事前準備
- 如要進一步瞭解快照的相關規定和限制,請參閱「儲存及載入快照」一文。 
- Cloud Composer 2.0.32 以上版本支援排程快照。2.0.9 以上版本支援環境快照。 
建立排程快照的值區
建立 bucket 來存放排程快照。請考量您要如何使用環境快照。如果是災難復原計畫的一部分,請使用跨區域備援的 bucket,或不同區域的 bucket,這樣即使區域全面中斷,您也能存取資料。否則,與環境位於相同區域的 bucket 可能更適合,這樣一來,您就能減少區域間資料移轉的費用。
設定 bucket 的權限
設定下列權限:
- 環境的服務帳戶必須具備這個值區的讀取和寫入權限。舉例來說,「Storage 物件管理員」角色就具備這類權限。 
- 使用者帳戶不需要任何額外權限,即可從值區載入快照,除非您想從 Google Cloud 控制台查看值區內容。在這種情況下,使用者帳戶必須具備該儲存空間的讀取權限。 
設定值區的生命週期設定
如要節省儲存空間費用,您可以設定規則,在一段時間後刪除環境快照。
舉例來說,如要自動刪除超過 30 天的快照,請按照下列步驟操作:
- 為 bucket 設定生命週期設定。
- 指定「刪除物件」動作。
- 選取「年齡」,並將條件設為 30 天。
為環境啟用快照排程
主控台
- 前往 Google Cloud 控制台的「Environments」頁面。 
- 在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。 
- 前往「環境設定」分頁。 
- 在「復原設定」>「快照排程」中,按一下「編輯」。「Snapshot schedule」(快照排程) 窗格隨即開啟。 
- 在「快照排程」窗格中,選取「按照指定的排程時間定期建立快照」。 
- 在「排程頻率」下拉式清單中,選取每日、每週或自訂快照週期。 - 您可以使用 unix-cron 格式指定自訂時間表。舉例來說,如要每 30 分鐘儲存一次快照,請指定 - */30 * * * *。
- 在「快照位置」欄位中,選取要儲存快照的 bucket 資料夾。 
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 控制台的「Environments」頁面。 
- 在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。 
- 前往「環境設定」分頁。 
- 在「復原設定」>「快照排程」中,按一下「編輯」。「Snapshot schedule」(快照排程) 窗格隨即開啟。 
- 在「Snapshot schedule」(快照排程) 窗格中,選取「Do not create snapshots automatically」(不要自動建立快照)。 
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
    }
  }
}