Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明如何為新環境或現有環境啟用 Airflow 工作記錄儲存功能,將記錄儲存至環境的 bucket。
您也可以選擇啟用工作記錄同步功能,將記錄同步到環境的 bucket。
關於將記錄檔儲存至環境值區
將記錄檔儲存至環境的 bucket 的運作方式如下:
- 已停用 (預設):工作記錄檔會顯示在 Cloud Logging 中。您可以在 Airflow UI 和 Cloud Logging 中查看這些記錄。工作記錄檔不會儲存至環境的值區。 - 如果儲存記錄檔至環境值區的功能已停用,而您啟用這項功能,Airflow UI 中顯示的工作記錄檔不會顯示記錄項目,這些記錄項目是在記錄檔僅儲存至 Cloud Logging 時產生。這些記錄檔並未遺失,仍可在 Cloud Logging 中查看。 
- 已啟用:工作記錄檔會同時儲存至 Cloud Logging 和環境的值區。您可以在 Airflow UI 和 Cloud Logging 中查看這些記錄。環境的值區會儲存含有這些記錄的檔案。 - 如果已啟用將記錄檔儲存至環境值區的功能,停用後,系統不會刪除已儲存至環境值區的記錄檔,這些記錄檔仍會保留在值區中。 
事前準備
- 從 Cloud Composer 2.8.0 版開始,所有環境預設都不會將工作記錄儲存在環境的 bucket 中。您還是可以在 Cloud Logging 和 Airflow UI 中查看工作記錄。 
- 升級環境時,系統不會變更在環境 bucket 中儲存記錄的設定。舉例來說,如果您將環境升級至較新版本,且該環境已將記錄檔儲存至環境的值區,則升級後環境仍會將記錄檔儲存至環境的值區。 
- 如要啟用或停用這個選項,可以使用 Google Cloud CLI、Cloud Composer API 或 Terraform。您無法透過 Google Cloud 控制台變更這個選項。 
建立環境時,啟用或停用將工作記錄儲存至環境 bucket 的功能
gcloud
建立環境時,下列引數會指定 Airflow 工作記錄的儲存方式:
- --disable-logs-in-cloud-logging-only引數可將 Airflow 工作記錄儲存至環境的值區。
- --enable-logs-in-cloud-logging-only引數會停用將 Airflow 工作記錄儲存至環境值區的功能。記錄檔只會儲存到 Cloud Logging。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-logs-in-cloud-logging-only
更改下列內容:
- ENVIRONMENT_NAME:環境名稱。
- LOCATION:環境所在的區域。
範例:
gcloud composer environments create example-environment \
    --location us-central1 \
    --disable-logs-in-cloud-logging-only
API
建立環境時,請依序前往「Environment」(環境) >「EnvironmentConfig」(環境設定)EnvironmentConfig >「DataRetentionConfig」(資料保留設定)DataRetentionConfig >「TaskLogsRetentionConfig」(工作記錄保留設定)TaskLogsRetentionConfig 資源,然後指定 Airflow 工作記錄的儲存方式:
- CLOUD_LOGGING_AND_CLOUD_STORAGE,將記錄檔儲存至環境的 bucket 和 Cloud Logging。
- CLOUD_LOGGING_ONLY,只將記錄檔儲存在 Cloud Logging 中。
{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}
更改下列內容:
- ENVIRONMENT_NAME:環境名稱。
- LOCATION:環境所在的區域。
- PROJECT_ID:專案 ID。
範例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}
Terraform
建立環境時,task_logs_retention_config 區塊中的 storage_mode 欄位會指定 Airflow 工作記錄的儲存方式:
- CLOUD_LOGGING_AND_CLOUD_STORAGE,將記錄檔儲存至環境的 bucket 和 Cloud Logging。
- CLOUD_LOGGING_ONLY,只將記錄檔儲存在 Cloud Logging 中。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"
  config {
    data_retention_config {
      task_logs_retention_config {
        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
更改下列內容:
- ENVIRONMENT_NAME:環境名稱。
- LOCATION:環境所在的區域。
範例:
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"
  config {
    data_retention_config {
      task_logs_retention_config {
        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}
為現有環境啟用或停用將工作記錄檔儲存至環境 bucket 的功能
gcloud
更新環境時,您可以使用下列引數啟用或停用將 Airflow 工作記錄儲存至環境值區的功能:
- --disable-logs-in-cloud-logging-only引數可將 Airflow 工作記錄儲存至環境的值區。記錄檔會儲存至環境值區和 Cloud Logging。
- --enable-logs-in-cloud-logging-only引數會停用將 Airflow 工作記錄儲存至環境值區的功能。記錄檔只會儲存到 Cloud Logging。
如要在環境的 bucket 中儲存 Airflow 記錄,請按照下列步驟操作:
gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-logs-in-cloud-logging-only
更改下列內容:
- ENVIRONMENT_NAME:環境名稱。
- LOCATION:環境所在的區域。
範例:
gcloud composer environments update example-environment \
    --location us-central1 \
    --disable-logs-in-cloud-logging-only
API
- 建構 - environments.patchAPI 要求。
- 在這項要求中: - 在 - updateMask參數中,指定- config.dataRetentionConfig.taskLogsRetentionConfig.storageMode遮罩。
- 在要求主體中,指定 Airflow 工作記錄的儲存方式: - CLOUD_LOGGING_AND_CLOUD_STORAGE,將記錄檔儲存至環境的 bucket 和 Cloud Logging。
- CLOUD_LOGGING_ONLY,只將記錄檔儲存在 Cloud Logging 中。
 
 
{
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}
範例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.dataRetentionConfig.taskLogsRetentionConfig.storageMode
{
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}
Terraform
在 task_logs_retention_config 區塊的 storage_mode 欄位中,指定 Airflow 工作記錄的儲存方式:
- CLOUD_LOGGING_AND_CLOUD_STORAGE,將記錄檔儲存至環境的 bucket 和 Cloud Logging。
- CLOUD_LOGGING_ONLY,只將記錄檔儲存在 Cloud Logging 中。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"
  config {
    data_retention_config {
      task_logs_retention_config {
        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
更改下列內容:
- ENVIRONMENT_NAME:環境名稱。
- LOCATION:環境所在的區域。
範例:
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"
  config {
    data_retention_config {
      task_logs_retention_config {
        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}