建立 Cloud Composer 環境

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面說明如何建立 Cloud Composer 環境。

事前準備

步驟 1:建立或選擇環境的服務帳戶

建立環境時,您會指定服務帳戶。這個服務帳戶稱為環境的服務帳戶。您的環境會使用這個服務帳戶執行大部分作業。

環境的服務帳戶並非使用者帳戶。服務帳戶是一種特殊的帳戶,由應用程式或虛擬機器 (VM) 執行個體使用,而非由人使用。

您無法事後變更環境的服務帳戶。

如果專案中尚未有 Cloud Composer 環境的服務帳戶,請建立一個。

如需 Terraform 中為環境建立服務帳戶的詳細範例,請參閱「建立環境 (Terraform)」一文。

如要為環境建立新的服務帳戶,請按照下列步驟操作:

  1. 按照 Identity and Access Management 說明文件中的說明建立新的服務帳戶

  2. 如需詳細資訊,請參閱 Identity and Access Management 說明文件中的授予角色一節。必要角色為 Composer Worker (composer.worker)。

  3. 如要存取 Google Cloud 專案中的其他資源,請將額外權限授予此服務帳戶,讓該帳戶能夠存取這些資源。在大多數情況下,Composer 工作者 (composer.worker) 角色會提供這組必要權限。只有在 DAG 運作需要時,才為這個服務帳戶新增額外權限。

步驟 2:基本設定

這個步驟會在指定位置建立 Cloud Composer 環境,並設定預設參數。

主控台

  1. 在 Google Cloud 控制台中,前往「Create environment」頁面。

    前往「建立環境」

  2. 在「Name」欄位中,輸入環境名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範

  3. 在「Location」下拉式清單中,為環境選擇位置。

    位置是指環境所在的區域。

  4. 在「映像檔版本」下拉式清單中,選取含有所需 Airflow 版本的 Cloud Composer 映像檔

  5. 在「Service account」下拉式清單中,選取環境的服務帳戶。

    如果您尚未為環境建立服務帳戶,請參閱建立或選擇環境的服務帳戶

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version IMAGE_VERSION \
    --service-account "SERVICE_ACCOUNT"

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範

  • LOCATION 替換成環境的區域。

    位置是指環境所在的區域。

  • SERVICE_ACCOUNT 與環境的服務帳戶。

  • IMAGE_VERSION 改為 Cloud Composer 映像檔的名稱。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
"

API

建構 environments.create API 要求。在 Environment 資源中指定設定。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion": "IMAGE_VERSION"
    },
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • PROJECT_ID 替換為專案 ID

  • LOCATION 替換成環境的區域。

    位置是指環境所在的區域。

  • ENVIRONMENT_NAME 替換為環境名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範

  • IMAGE_VERSION 改為 Cloud Composer 映像檔的名稱。

  • SERVICE_ACCOUNT 與環境的服務帳戶。

範例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-3-airflow-2.10.5-build.6"
    },
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

如要建立含有預設參數的環境,請將下列資源區塊新增至 Terraform 設定,然後執行 terraform apply

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "IMAGE_VERSION"
    }
    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範

  • LOCATION 替換成環境的區域。

    位置是指環境所在的區域。

  • IMAGE_VERSION 改為 Cloud Composer 映像檔的名稱。

  • SERVICE_ACCOUNT 與環境的服務帳戶。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-3-airflow-2.10.5-build.6"
    }
    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

步驟 3:(選用) 設定環境縮放和效能參數

如要指定環境的規模和效能設定,請選取環境大小和工作負載設定。

建立環境後,您可以變更所有效能和縮放參數。

下列參數可控管規模和效能:

  • 環境大小。控管包含 Airflow 資料庫的代管 Cloud Composer 基礎架構的效能參數。如要執行大量 DAG 和工作,並提高基礎架構效能,請考慮選取較大的環境規模。舉例來說,環境越大,環境就能以最少的延遲處理的 Airflow 工作日誌項目就越多。

  • 工作負載設定:控制在環境 GKE 叢集中執行的 Airflow 元件規模和效能。

    • Airflow 排程器。剖析 DAG 定義檔案、依據排程間隔排定 DAG 執行作業,並將任務排入佇列來讓 Airflow 工作站執行。

      您的環境可以同時執行多個 Airflow 排程器。使用多個排程器將負載分配到多個排程器執行個體,以提升效能和穩定性。

      增加排程器數量不一定能改善 Airflow 效能。舉例來說,與其使用兩個排程器,不如只使用一個排程器,這樣可能會提供更好的效能。當未使用額外排程器時,就可能發生這種情況,因此會消耗環境資源,但不會提升整體效能。實際的排程器效能取決於 Airflow 工作站數量、在環境中執行的 DAG 和工作數量,以及 Airflow 和環境的設定。

      建議您先使用兩個排程器,然後監控環境效能。如果您變更排程器數量,隨時可以將環境規模縮減至原始排程器數量。

      如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件

    • Airflow 觸發器。以非同步方式監控環境中的所有延後工作。如果環境中至少有一個觸發器執行個體 (在高復原力環境中至少有兩個),您就可以在 DAG 中使用可延遲運算子

      在 Cloud Composer 3 中,系統會預設啟用 Airflow 觸發器。如要建立不含觸發器的環境,請將觸發器數量設為零。

    • Airflow DAG 處理器。處理 DAG 檔案並將其轉換為 DAG 物件。在 Cloud Composer 3 中,排程器的這部分會以獨立的環境元件執行。

    • Airflow 網路伺服器。執行 Airflow 網頁介面,方便您監控、管理 DAG 並以視覺化方式呈現。

    • Airflow 工作站。執行由 Airflow 排程器排定的任務。環境中的工作站數量下限和上限會根據佇列中的工作數量動態調整。

主控台

您可以為環境選取預設設定。選取預設值時,系統會自動選取該預設值的比例和效能參數。您也可以選擇自訂預設值,並指定環境的所有規模和成效參數。

如要為環境選取規模和效能設定,請在「Create environment」頁面中:

  • 如要使用預先定義的值,請在「環境資源」部分中,按一下「小」、「中」或「大」

  • 如要為比例和效能參數指定自訂值,請按照下列步驟操作:

    1. 在「環境資源」部分,按一下「自訂」

    2. 在「Scheduler」部分中,設定要使用的排程器數量,以及 CPU、記憶體和儲存空間的資源分配。

    3. 在「觸發條件」專區中,使用「觸發條件數量」欄位輸入環境中的觸發條件數量。

      如果您不想在 DAG 中使用可延遲運算子,請將觸發條件數量設為零。

      如果您為環境設定至少一個觸發器,請使用「CPU」和「記憶體」欄位,為觸發器設定資源分配。

    4. 在「DAG 處理器」部分,指定環境中的 DAG 處理器數量,以及每個 DAG 處理器的 CPU、記憶體和儲存空間數量。

    5. 在「Web 伺服器」部分,指定 Web 伺服器的 CPU、記憶體和儲存空間數量。

    6. 在「Worker」部分中,指定下列項目:

      • 環境中自動調度資源限制的工作站數量下限和上限。
      • 工作站的 CPU、記憶體和儲存空間配置
    7. 在「核心基礎架構」專區的「環境大小」下拉式清單中,選取環境大小。

gcloud

建立環境時,下列引數會控制環境的規模和效能參數。

  • --environment-size 會指定環境大小。
  • --scheduler-count 指定排程器數量。
  • --scheduler-cpu 可指定 Airflow 排程器的 CPU 數量。
  • --scheduler-memory 會指定 Airflow 調度器的記憶體容量。
  • --scheduler-storage 可指定 Airflow 排程器的磁碟空間量。

  • --triggerer-count 會指定環境中的 Airflow 觸發器數量。此標記的預設值為 0。如要在 DAG 中使用可延遲運算子,就需要觸發器。

    • 針對標準復原力環境,請使用介於 010 之間的值。
    • 對於具備高度彈性的環境,請使用 0 或介於 210 之間的值。
  • --triggerer-cpu 會以 vCPU 單位指定 Airflow 觸發器的 CPU 數量。允許的值:0.50.751。預設值為 0.5

  • --triggerer-memory 會以 GB 為單位指定 Airflow 觸發器的記憶體容量。預設值為 0.5

    所需記憶體容量下限等於為觸發條件分配的 CPU 數量。允許的最大值等於觸發器 CPU 數量乘以 6.5。

    舉例來說,如果您將 --triggerer-cpu 旗標設為 1--triggerer-memory最小值1最大值則為 6.5

  • --dag-processor-cpu 會指定 DAG 處理器的 CPU 數量。

  • --dag-processor-memory 會指定 DAG 處理器的記憶體量。

  • --dag-processor-storage 可指定 DAG 處理器的磁碟空間量。

  • --web-server-cpu 可指定 Airflow 網路伺服器的 CPU 數量。

  • --web-server-memory 會指定 Airflow 網路伺服器的記憶體容量。

  • --web-server-storage 可指定 Airflow 網頁伺服器的磁碟空間量。

  • --worker-cpu 會指定 Airflow 工作站的 CPU 數量。

  • --worker-memory 會指定 Airflow worker 的記憶體容量。

  • --worker-storage 可指定 Airflow 工作站的磁碟空間量。

  • --min-workers 指定 Airflow 工作站數量下限。環境叢集至少會執行這個數量的 worker。

  • --max-workers 會指定 Airflow 工作站的數量上限。環境叢集最多會執行這個數量的 worker。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --environment-size ENVIRONMENT_SIZE \
    --scheduler-count SCHEDULER_COUNT \
    --scheduler-cpu SCHEDULER_CPU \
    --scheduler-memory SCHEDULER_MEMORY \
    --scheduler-storage SCHEDULER_STORAGE \
    --triggerer-count TRIGGERER_COUNT \
    --triggerer-cpu TRIGGERER_CPU \
    --triggerer-memory TRIGGERER_MEMORY \
    --dag-processor-cpu DAG_PROCESSOR_CPU \
    --dag-processor-memory DAG_PROCESSOR_MEMORY \
    --dag-processor-storage DAG_PROCESSOR_STORAGE \
    --web-server-cpu WEB_SERVER_CPU \
    --web-server-memory WEB_SERVER_MEMORY \
    --web-server-storage WEB_SERVER_STORAGE \
    --worker-cpu WORKER_CPU \
    --worker-memory WORKER_MEMORY \
    --worker-storage WORKER_STORAGE \
    --min-workers WORKERS_MIN \
    --max-workers WORKERS_MAX

取代:

  • ENVIRONMENT_SIZE 搭配 smallmediumlarge
  • SCHEDULER_COUNT 與排程器數量。
  • SCHEDULER_CPU 與排程器的 CPU 數量,以 vCPU 為單位。
  • SCHEDULER_MEMORY 與排程器的記憶體量。
  • SCHEDULER_STORAGE 與排程器的磁碟大小。
  • TRIGGERER_COUNT 與觸發條件數量。
  • TRIGGERER_CPU 與觸發器的 CPU 數量,以 vCPU 為單位。
  • TRIGGERER_MEMORY 與觸發器的記憶體量,以 GB 為單位。

  • DAG_PROCESSOR_CPU 與 DAG 處理器的 CPU 數量。

  • DAG_PROCESSOR_MEMORY 與 DAG 處理器的記憶體量。

  • DAG_PROCESSOR_STORAGE,其中包含 DAG 處理器的磁碟空間量。

  • WEB_SERVER_CPU 與網路伺服器的 CPU 數量,單位為 vCPU。

  • WEB_SERVER_MEMORY 與網路伺服器的記憶體用量。

  • WEB_SERVER_STORAGE 與網路伺服器的記憶體用量。

  • WORKER_CPU 與工作站的 CPU 數量,以 vCPU 為單位。

  • WORKER_MEMORY 與工作站的記憶體用量。

  • WORKER_STORAGE 與工作站的磁碟大小。

  • WORKERS_MIN 與環境可執行的 Airflow 工作站數量下限。環境中的工作站數量不會超過這個數字,即使較少的工作站也能處理負載。

  • WORKERS_MAX 與環境可執行的 Airflow 工作站數量上限。即使處理負載需要更多工作站,環境中的工作站數量也不會超過這個數字。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --environment-size small \
    --scheduler-count 1 \
    --scheduler-cpu 0.5 \
    --scheduler-memory 2.5GB \
    --scheduler-storage 2GB \
    --triggerer-count 1 \
    --triggerer-cpu 0.5 \
    --triggerer-memory 0.5GB \
    --dag-processor-cpu 0.5 \
    --dag-processor-memory 2GB \
    --dag-processor-storage 1GB \
    --web-server-cpu 1 \
    --web-server-memory 2.5GB \
    --web-server-storage 2GB \
    --worker-cpu 1 \
    --worker-memory 2GB \
    --worker-storage 2GB \
    --min-workers 2 \
    --max-workers 4

API

建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig>「WorkloadsConfig」WorkloadsConfig資源中,指定環境規模和效能參數。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": SCHEDULER_CPU,
        "memoryGb": SCHEDULER_MEMORY,
        "storageGb": SCHEDULER_STORAGE,
        "count": SCHEDULER_COUNT
      },
      "triggerer": {
        "count": TRIGGERER_COUNT,
        "cpu": TRIGGERER_CPU,
        "memoryGb": TRIGGERER_MEMORY
      },
      "dagProcessor": {
        "count": 1,
        "cpu": DAG_PROCESSOR_CPU,
        "memoryGb": DAG_PROCESSOR_MEMORY,
        "storageGb": DAG_PROCESSOR_STORAGE
      },
      "webServer": {
        "cpu": WEB_SERVER_CPU,
        "memoryGb": WEB_SERVER_MEMORY,
        "storageGb": WEB_SERVER_STORAGE
      },
      "worker": {
        "cpu": WORKER_CPU,
        "memoryGb": WORKER_MEMORY,
        "storageGb": WORKER_STORAGE,
        "minCount": WORKERS_MIN,
        "maxCount": WORKERS_MAX
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE",
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • SCHEDULER_CPU 與排程器的 CPU 數量,以 vCPU 為單位。
  • SCHEDULER_MEMORY 包含排程器的記憶體量,單位為 GB。
  • SCHEDULER_STORAGE:排程器的磁碟大小 (GB)。
  • SCHEDULER_COUNT 與排程器數量。

  • TRIGGERER_COUNT 與觸發條件數量。預設值為 0。如要在 DAG 中使用可延遲運算子,就需要觸發器。

    • 針對標準復原力環境,請使用介於 010 之間的值。
    • 對於具備高度彈性的環境,請使用 0 或介於 210 之間的值。

    如果您至少使用一個觸發器,則必須指定 TRIGGERER_CPUTRIGGERER_MEMORY 參數:

  • TRIGGERER_CPU 會以 vCPU 單位指定觸發器的 CPU 數量。允許的值:0.50.751

  • TRIGGERER_MEMORY 會設定觸發器的記憶體量。所需記憶體容量下限等於為觸發條件分配的 CPU 數量。允許的最大值等於觸發器 CPU 數量乘以 6.5。

    舉例來說,如果您將 TRIGGERER_CPU 設為 1TRIGGERER_MEMORY最小值1最大值則為 6.5

  • DAG_PROCESSOR_CPU,包含 DAG 處理器的 CPU 數量,單位為 vCPU。

  • DAG_PROCESSOR_MEMORY 與 DAG 處理器的記憶體量,以 GB 為單位。

  • DAG_PROCESSOR_STORAGE:DAG 處理器的磁碟空間大小 (以 GB 為單位)。

  • WEB_SERVER_CPU 與網路伺服器的 CPU 數量,單位為 vCPU。

  • WEB_SERVER_MEMORY 包含網路伺服器的記憶體量 (以 GB 為單位)。

  • WEB_SERVER_STORAGE 包含網頁伺服器的磁碟大小 (GB)。

  • WORKER_CPU 與工作站的 CPU 數量,以 vCPU 為單位。

  • WORKER_MEMORY 包含工作站的記憶體量,以 GB 為單位。

  • WORKER_STORAGE:工作站的磁碟大小,單位為 GB。

  • WORKERS_MIN 與環境可執行的 Airflow 工作站數量下限。環境中的工作站數量不會超過這個數字,即使較少的工作站也能處理負載。

  • WORKERS_MAX 與環境可執行的 Airflow 工作站數量上限。即使處理負載需要更多工作站,環境中的工作站數量也不會超過這個數字。

  • ENVIRONMENT_SIZE 搭配環境大小 ENVIRONMENT_SIZE_SMALLENVIRONMENT_SIZE_MEDIUMENVIRONMENT_SIZE_LARGE

範例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": 2.5,
        "memoryGb": 2.5,
        "storageGb": 2,
        "count": 1
      },
      "triggerer": {
        "cpu": 0.5,
        "memoryGb": 0.5,
        "count": 1
      },
      "dagProcessor": {
        "count": 1,
        "cpu": 0.5,
        "memoryGb": 2,
        "storageGb": 1
      },
      "webServer": {
        "cpu": 1,
        "memoryGb": 2.5,
        "storageGb": 2
      },
      "worker": {
        "cpu": 1,
        "memoryGb": 2,
        "storageGb": 2,
        "minCount": 2,
        "maxCount": 4
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE_SMALL",
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

建立環境時,下列引數會控制環境的規模和效能參數。

  • config 區塊中:

    • environment_size 欄位會控制環境大小。
  • workloads_config 區塊中:

    • scheduler.cpu 欄位會指定 Airflow 排程器的 CPU 數。
    • scheduler.memory_gb 欄位會指定 Airflow 排程器的記憶體量。
    • scheduler.storage_gb 欄位會指定排程器的磁碟空間量。
    • scheduler.count 欄位會指定環境中的排程器數量。
    • triggerer.cpu 欄位會指定 Airflow 觸發器的 CPU 數量。
    • triggerer.memory_gb 欄位會指定 Airflow 觸發器的記憶體量。
    • triggerer.count 欄位會指定環境中的觸發條件數量。

    • dag_processor.cpu 欄位會指定 DAG 處理器的 CPU 數量。

    • dag_processor.memory_gb 欄位會指定 DAG 處理器的記憶體量。

    • dag_processor.storage_gb 欄位會指定 DAG 處理器的磁碟空間量。

    • dag_processor.count 欄位會指定 DAG 處理器的數量。

    • web_server.cpu 欄位會指定 Airflow 網路伺服器的 CPU 數量。

    • web_server.memory_gb 欄位會指定 Airflow 網路伺服器的記憶體容量。

    • web_server.storage_gb 欄位會指定 Airflow 網路伺服器的磁碟空間量。

    • worker.cpu 欄位會指定 Airflow 工作站的 CPU 數量。

    • worker.memory_gb 欄位會指定 Airflow 工作站的記憶體容量。

    • worker.storage_gb 欄位會指定 Airflow worker 的磁碟空間量。

    • worker.min_count 欄位會指定環境中的工作站數量下限。

    • worker.max_count 欄位會指定環境中的工作站數量上限。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {

      scheduler {
        cpu = SCHEDULER_CPU
        memory_gb = SCHEDULER_MEMORY
        storage_gb = SCHEDULER_STORAGE
        count = SCHEDULER_COUNT
      }
      triggerer {
        count = TRIGGERER_COUNT
        cpu = TRIGGERER_CPU
        memory_gb = TRIGGERER_MEMORY
      }
      web_server {
        cpu = WEB_SERVER_CPU
        memory_gb = WEB_SERVER_MEMORY
        storage_gb = WEB_SERVER_STORAGE
      }
      worker {
        cpu = WORKER_CPU
        memory_gb = WORKER_MEMORY
        storage_gb = WORKER_STORAGE
        min_count = WORKERS_MIN
        max_count = WORKERS_MAX
      }
    }

    environment_size = "ENVIRONMENT_SIZE"

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。
  • SERVICE_ACCOUNT 與環境的服務帳戶。
  • SCHEDULER_CPU 與排程器的 CPU 數量,以 vCPU 為單位。
  • SCHEDULER_MEMORY 包含排程器的記憶體量,單位為 GB。
  • SCHEDULER_STORAGE:排程器的磁碟大小 (GB)。
  • SCHEDULER_COUNT 與排程器數量。
  • TRIGGERER_COUNT 與觸發條件數量。
  • TRIGGERER_CPU 與觸發器的 CPU 數量,以 vCPU 為單位。
  • TRIGGERER_MEMORY 與觸發器的記憶體量,以 GB 為單位。
  • WEB_SERVER_CPU 與網路伺服器的 CPU 數量,單位為 vCPU。
  • WEB_SERVER_MEMORY 包含網路伺服器的記憶體量 (以 GB 為單位)。
  • WEB_SERVER_STORAGE 包含網頁伺服器的磁碟大小 (GB)。
  • WORKER_CPU 與工作站的 CPU 數量,以 vCPU 為單位。
  • WORKER_MEMORY 包含工作站的記憶體量,以 GB 為單位。
  • WORKER_STORAGE:工作站的磁碟大小,單位為 GB。
  • WORKERS_MIN 與環境可執行的 Airflow 工作站數量下限。環境中的工作站數量不會超過這個數字,即使較少的工作站也能處理負載。
  • WORKERS_MAX 與環境可執行的 Airflow 工作站數量上限。即使處理負載需要更多工作站,環境中的工作站數量也不會超過這個數字。
  • ENVIRONMENT_SIZE 搭配環境大小 ENVIRONMENT_SIZE_SMALLENVIRONMENT_SIZE_MEDIUMENVIRONMENT_SIZE_LARGE

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    workloads_config {

      scheduler {
        cpu = 2.5
        memory_gb = 2.5
        storage_gb = 2
        count = 1
      }
      triggerer {
        count = 1
        cpu = 0.5
        memory_gb = 0.5
      }
      web_server {
        cpu = 1
        memory_gb = 2.5
        storage_gb = 2
      }
      worker {
        cpu = 1
        memory_gb = 2
        storage_gb = 2
        min_count = 2
        max_count = 4
      }
    }

    environment_size = "ENVIRONMENT_SIZE_SMALL"

    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }

  }
}

步驟 4:(選用) 指定環境資料庫的區域

您可以為環境指定偏好的 Cloud SQL 區域。

主控台

在「Create environment」頁面中,執行下列操作:

  1. 在「進階設定」部分,展開「顯示進階設定」項目。

  2. 在「Airflow 資料庫可用區」清單中,選取偏好的 Cloud SQL 可用區。

gcloud

建立環境時,--cloud-sql-preferred-zone 引數會指定偏好的 Cloud SQL 區域。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --cloud-sql-preferred-zone SQL_ZONE

更改下列內容:

  • SQL_ZONE:偏好的 Cloud SQL 區域。這個可用區必須位於環境所在的區域。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --cloud-sql-preferred-zone us-central1-a

API

建立環境時,請在「Environment」>「DatabaseConfig」DatabaseConfig資源中,指定偏好的 Cloud SQL 區域。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "databaseConfig": {
      "zone": "SQL_ZONE"
    },
      "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

更改下列內容:

  • SQL_ZONE:偏好的 Cloud SQL 區域。這個可用區必須位於環境所在的區域。

範例:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "databaseConfig": {
      "zone": "us-central1-a"
    },
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

建立環境時,database_config 區塊中的 zone 欄位會指定偏好的 Cloud SQL 區域。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    database_config {
      zone = "SQL_ZONE"
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

更改下列內容:

  • SQL_ZONE:偏好的 Cloud SQL 區域。這個可用區必須位於環境所在的區域。

步驟 5:(選用) 設定環境的網路

您可以透過下列方式設定 Cloud Composer 3 網路:

主控台

  1. 請確認網路已針對要建立的環境類型進行設定。

  2. 在「網路設定」部分,展開「顯示網路設定」項目。

  3. 如果您想將環境連線至 VPC 網路,請在「Network attachment」(網路附件) 欄位中選取網路附件。您也可以建立新的網路連結。詳情請參閱「將環境連線至虛擬私有雲網路」。

  4. 如要建立私人 IP 環境,請在「網路類型」部分選取「私人 IP 環境」選項。

  5. 如要新增網路標記,請參閱「新增網路標記」一文。

gcloud

請確認網路已針對要建立的環境類型進行設定。

建立環境時,下列引數會控制網路參數。如果省略參數,系統會使用預設值。

  • --enable-private-environment 會啟用私人 IP 環境。

  • --network 會指定您的 VPC 網路 ID。

  • --subnetwork 會指定您的 VPC 子網路 ID。

範例 (私人 IP 環境,已連線至 VPC 網路)

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --enable-private-environment \
    --network NETWORK_ID \
    --subnetwork SUBNETWORK_ID \

取代:

  • NETWORK_ID 改成您的虛擬私有雲網路 ID。
  • SUBNETWORK_ID 與您的虛擬私有雲子網路 ID。

步驟 6:(選用) 新增網路標記

網路標記會套用至環境叢集中的所有節點 VM。標記可用於識別網路防火牆的有效來源或目標。清單中的每個標記都必須符合 RFC 1035

舉例來說,如果您打算使用防火牆規則限制私人 IP 環境的流量,可能就需要新增網路標記。

主控台

在「Create environment」頁面中,執行下列操作:

  1. 找出「網路設定」部分。
  2. 在「Network tags」欄位中,輸入環境的網路標記。

gcloud

建立環境時,下列引數會控制網路標記:

  • --tags 會指定套用至所有節點 VM 的網路標記逗號分隔清單。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --tags TAGS

取代:

  • TAGS,其中包含以半形逗號分隔的網路標記清單。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --tags group1,production

API

建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig資源中,指定環境的網路代碼。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "tags": [
        "TAG"
      ],
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • TAG 搭配網路標記。

範例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "nodeConfig": {
      "tags": [
        "group1",
        "production"
      ],
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

建立環境時,請使用下列欄位定義環境的網路標記:

  • node_config 區塊中的 tags 欄位會指定以半形逗號分隔的網路標記清單,這些標記會套用至所有節點 VM。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      tags = ["TAGS"]
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • TAGS,其中包含以半形逗號分隔的網路標記清單。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    node_config {
      tags = ["group1","production"]
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

步驟 7:(選用) 設定網路伺服器網路存取權

Airflow 網路伺服器存取參數不受環境類型影響。您可以改為個別設定 Web 伺服器存取權。舉例來說,私人 IP 環境仍可透過網際網路存取 Airflow UI。

您無法使用私人 IP 位址設定允許的 IP 範圍。

主控台

在「Create environment」頁面中,執行下列操作:

  1. 在「網路設定」部分,展開「顯示網路設定」項目。

  2. 在「網路伺服器網路存取權控管」部分:

    • 如要允許從所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 IP 位址傳出的存取要求」

    • 如要只限制存取特定 IP 範圍,請選取「只允許來自特定 IP 位址的存取要求」。在「IP 範圍」欄位中,請以 CIDR 標記法指定 IP 範圍。在「Description」欄位中,指定這個範圍的選用說明。如要指定多個範圍,請按一下「新增 IP 範圍」

    • 如要禁止所有 IP 位址存取,請選取「只允許來自特定 IP 位址的存取要求」,然後按一下空白範圍項目旁的「刪除項目」

gcloud

建立環境時,下列引數會控管網路伺服器存取層級:

  • --web-server-allow-all 可透過所有 IP 位址存取 Airflow。這是預設選項。

  • --web-server-allow-ip 會限制只允許特定來源 IP 範圍的存取。如要指定多個 IP 範圍,請多次使用這個引數。

  • --web-server-deny-all 會禁止所有 IP 位址的存取權。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

取代:

  • WS_IP_RANGE 與可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。
  • WS_RANGE_DESCRIPTION,其中包含 IP 範圍的說明。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
    --web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"

API

建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig資源中指定網路伺服器存取參數。

  • 如要允許所有 IP 位址存取 Airflow 網路伺服器,請省略 webServerNetworkAccessControl

  • 如要只限制特定 IP 範圍的存取權,請在 allowedIpRanges 中指定一或多個範圍。

  • 如要禁止所有 IP 位址的存取權,請新增 allowedIpRanges,並將其設為空白清單。請勿在其中指定 IP 範圍。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    },
      "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • WS_IP_RANGE 與可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。
  • WS_RANGE_DESCRIPTION,其中包含 IP 範圍的說明。

範例:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "192.0.2.0/24",
          "description": "office net 1"
        },
        {
          "value": "192.0.4.0/24",
          "description": "office net 3"
        }
      ]
    },
      "nodeConfig": {
        "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

建立環境時,web_server_network_access_control 區塊中的 allowed_ip_range 區塊會包含可存取網路伺服器的 IP 範圍。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    web_server_network_access_control {

      allowed_ip_range {
        value = "WS_IP_RANGE"
        description = "WS_RANGE_DESCRIPTION"
      }
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • WS_IP_RANGE 與可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。
  • WS_RANGE_DESCRIPTION,其中包含 IP 範圍的說明。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    web_server_network_access_control {
      allowed_ip_range {
        value = "192.0.2.0/24"
        description = "office net 1"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "office net 3"
      }
    }

    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }

}

步驟 8:(選用) 指定 Airflow 設定覆寫值和環境變數

您可以在建立環境時設定 Airflow 覆寫設定環境變數。或者,您也可以在建立環境後再進行這項操作。

部分 Airflow 設定選項遭到封鎖,因此您無法覆寫這些選項。

如需可用的 Airflow 設定選項清單,請參閱 Airflow 2 設定參考資料Airflow 1.10.*

如要指定 Airflow 設定覆寫和環境變數,請按照下列步驟操作:

主控台

在「Create environment」頁面中,執行下列操作:

  1. 在「環境變數」區段中,按一下「新增環境變數」

  2. 輸入環境變數的「名稱」和「值」

  3. 在「Airflow configuration overrides」(Airflow 設定覆寫) 部分,按一下「Add Airflow configuration override」(新增 Airflow 設定覆寫)

  4. 輸入設定選項覆寫值的區段

    例如:

    區段
    webserver dag_orientation TB

gcloud

建立環境時,下列引數會控制環境變數和 Airflow 設定覆寫值:

  • --env-variables 會指定以逗號分隔的環境變數清單。

    變數名稱可包含大小寫英文字母、數字和底線,但不得以數字開頭。

  • --airflow-configs 會指定 Airflow 設定覆寫值的鍵和值清單,以逗號分隔。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --env-variables ENV_VARS \
    --airflow-configs CONFIG_OVERRIDES

取代:

  • ENV_VARS 包含以半形逗號分隔的環境變數 NAME=VALUE 組合清單。
  • CONFIG_OVERRIDES 包含以逗號分隔的 SECTION-KEY=VALUE 組合清單,用於設定覆寫。請使用 - 符號分隔設定區段名稱,後方依序加上鍵名。例如:core-dags_are_paused_at_creation

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --env-variables SENDGRID_MAIL_FROM=[email protected],SENDGRID_API_KEY=example-key \
    --airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB

API

建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig資源中指定環境變數和 Airflow 設定覆寫值。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "airflowConfigOverrides": {
        "SECTION-KEY": "OVERRIDE_VALUE"
      },
      "envVariables": {
        "VAR_NAME": "VAR_VALUE",
      }
    },
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • SECTION 與設定檔中 Airflow 設定選項所在的部分。
  • KEY,其中包含 Airflow 設定選項的名稱。
  • OVERRIDE_VALUE,其值為 Airflow 設定選項。
  • VAR_NAME 與環境變數名稱。
  • VAR_VALUE 與環境變數的值。

範例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "softwareConfig": {
      "airflowConfigOverrides": {
        "core-dags_are_paused_at_creation": "True",
        "webserver-dag_orientation": "TB"
      },
      "envVariables": {
        "SENDGRID_MAIL_FROM": "[email protected]",
        "SENDGRID_API_KEY": "example-key"
      }
    },
    "nodeConfig": {
        "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

建立環境時,下列區塊會控制環境變數和 Airflow 設定覆寫值:

  • software_config 區塊中的 env_variables 區塊會指定環境變數。

    變數名稱可包含大小寫英文字母、數字和底線,但不得以數字開頭。

  • software_config 區塊中的 airflow_config_overrides 區塊會指定 Airflow 設定覆寫值。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {

      airflow_config_overrides = {
        SECTION-KEY = "OVERRIDE_VALUE"
      }

      env_variables = {
        VAR_NAME = "VAR_VALUE"
      }
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }

  }
}

取代:

  • SECTION 與設定檔中 Airflow 設定選項所在的部分。
  • KEY,其中包含 Airflow 設定選項的名稱。
  • OVERRIDE_VALUE,其值為 Airflow 設定選項。
  • VAR_NAME 與環境變數名稱。
  • VAR_VALUE 與環境變數的值。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    software_config {

      airflow_config_overrides = {
        core-dags_are_paused_at_creation = "True"
        webserver-dag_orientation = "TB"
      }

      env_variables = {
        SENDGRID_MAIL_FROM = "[email protected]"
        SENDGRID_API_KEY = "example-key"
      }
    }

    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

步驟 9:(選用) 指定維護期間

Cloud Composer 3 中的預設維護期間定義如下:

  • 所有時間都以您環境所在地區的當地時區為準,但不考慮日光節約時間。
  • 週二、週三、週四和週五的維護時段為 00:00:00 到 02:00:00。
  • 週六、週日和週一的維護期間為 00:00:00 到 04:00:00。

如要為環境指定自訂維護期間,請按照下列步驟操作:

主控台

在「Create environment」頁面中

  1. 找出「維護期間」部分。

  2. 在「時區」下拉式清單中,選擇維護時段的時區。

  3. 設定「開始時間」、「天數」和「長度」,以便:

    • 每週至少分配 12 小時。

    • 您可以使用多個時段,但每個時段的時間長度必須至少為 4 小時。

    舉例來說,每週一、週三和週五的 4 小時時間長度符合需求。

gcloud

下列引數可定義維護期間參數:

  • --maintenance-window-start 會設定維護期間的開始時間。
  • --maintenance-window-end 會設定維護期間的結束時間。
  • --maintenance-window-recurrence 會設定維護期間週期
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • DATETIME_START 的開始日期和時間,以日期/時間輸入格式表示。只使用當天指定的時間,系統會忽略指定的日期。
  • DATETIME_END 結束日期和時間,格式為日期/時間輸入格式。系統只會使用當天指定的時間,而忽略指定的日期。指定的日期和時間必須晚於開始日期。
  • MAINTENANCE_RECURRENCE 搭配 RFC 5545 RRULE,用於維護期間的重複時間。Cloud Composer 支援兩種格式:

  • FREQ=DAILY 格式指定每日週期。

  • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 格式會指定在所選星期幾重複發生的事件。

以下範例指定星期三、星期六和星期日的 01:00 至 07:00 (世界標準時間) 之間的 6 小時維護期間。系統會忽略 2023 年 1 月 1 日的日期。

gcloud composer environments create example-environment \
  --location us-central1 \
  --image-version composer-3-airflow-2.10.5-build.6 \
  --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
  --maintenance-window-start '2023-01-01T01:00:00Z' \
  --maintenance-window-end '2023-01-01T07:00:00Z' \
  --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'

API

建立環境時,請在 Environment > EnvironmentConfig 資源中指定維護時段參數:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "maintenanceWindow": {
        "startTime": "DATETIME_START",
        "endTime": "DATETIME_END",
        "recurrence": "MAINTENANCE_RECURRENCE"
    },
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • DATETIME_START 的開始日期和時間,以日期/時間輸入格式表示。系統只會使用當天指定的時間,而忽略指定的日期。
  • DATETIME_END 結束日期和時間,格式為日期/時間輸入格式。系統只會使用當天指定的時間,而忽略指定的日期。指定的日期和時間必須晚於開始日期。
  • MAINTENANCE_RECURRENCE 搭配維護期間重複的 RFC 5545 RRULE。Cloud Composer 支援兩種格式:

  • FREQ=DAILY 格式指定每日週期。

  • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 格式會指定在所選星期幾重複發生的事件。

以下範例指定星期三、星期六和星期日的 01:00 至 07:00 (世界標準時間) 之間的 6 小時維護期間。系統會忽略 2023 年 1 月 1 日的日期。

範例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "maintenanceWindow": {
        "startTime": "2023-01-01T01:00:00Z",
        "endTime": "2023-01-01T07:00:00Z",
        "recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    },
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

Terraform

maintenance_window 區塊會指定環境的維護期間:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    maintenance_window {
      start_time = "DATETIME_START"
      end_time = "DATETIME_END"
      recurrence = "MAINTENANCE_RECURRENCE"
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

取代:

  • DATETIME_START 的開始日期和時間,以日期/時間輸入格式表示。系統只會使用當天指定的時間,而忽略指定的日期。
  • DATETIME_END 結束日期和時間,格式為日期/時間輸入格式。系統只會使用當天指定的時間,而忽略指定的日期。指定的日期和時間必須晚於開始日期。
  • MAINTENANCE_RECURRENCE 搭配維護期間重複的 RFC 5545 RRULE。Cloud Composer 支援兩種格式:

    • FREQ=DAILY 格式指定每日週期。
    • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 格式會指定在所選星期幾重複發生的事件。

以下範例指定星期三、星期六和星期日的 01:00 至 07:00 (世界標準時間) 之間的 6 小時維護期間。系統會忽略 2023 年 1 月 1 日的日期。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    maintenance_window {
      start_time = "2023-01-01T01:00:00Z"
      end_time = "2023-01-01T07:00:00Z"
      recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

步驟 10:(選用) 資料歷程整合

資料歷程是 Dataplex Universal Catalog 的功能,可讓您追蹤資料移動情形。

資料歷程整合功能適用於 Cloud Composer 3 的所有版本。

如果符合下列條件,系統會在新的 Cloud Composer 環境中自動啟用資料歷程整合功能:

  • 專案中已啟用 Data Lineage API。詳情請參閱 Dataplex 通用目錄說明文件中的「啟用資料系譜 API」。

  • 在 Airflow 中未設定自訂的Lineage 後端

您可以在建立環境時停用資料沿革整合功能。例如,如果您想在環境建立後,覆寫自動行為或選擇稍後啟用資料沿革記錄

主控台

如要停用資料歷程整合功能,請在「Create environment」頁面中:

  1. 在「進階設定」部分,展開「顯示進階設定」項目。

  2. 在「Dataplex 資料歷程整合」部分,選取「停用 Dataplex 資料歷程整合」

gcloud

建立環境時,--disable-cloud-data-lineage-integration 引數會停用資料系譜整合功能。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --disable-cloud-data-lineage-integration

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --disable-cloud-data-lineage-integration

步驟 11:(選用) 設定資料加密 (CMEK)

根據預設,環境中的資料會使用 Google 提供的金鑰加密。

如要使用客戶自行管理的加密金鑰 (CMEK) 加密環境中的資料,請按照「使用客戶自行管理的加密金鑰」一文中的指示操作。

步驟 12:(選用) 使用自訂環境的 bucket

建立環境時,Cloud Composer 會自動為環境建立值區。

您也可以改為在專案中指定自訂 Cloud Storage 值區。您的環境會以與自動建立的值區相同的方式使用這個值區。

如要使用自訂環境值區,請按照「使用自訂環境的值區」一文中的說明操作。

步驟 13:(選用) 設定資料庫保留期限

如果您在環境中啟用資料庫保留功能,Cloud Composer 會定期從 Airflow 資料庫中移除超過指定時間範圍的 DAG 執行作業和使用者工作階段相關記錄。系統一律會保留最新的 DAG 執行資訊。

資料庫保留功能預設為啟用。如要設定新環境的保留期限或停用資料庫保留功能,請按照「設定資料庫保留政策」一文中的操作說明進行。您也可以稍後再設定資料庫保留期限。

步驟 14:(選用) 指定環境標籤

您可以為環境指派標籤,根據這些標籤細分帳單費用

主控台

在「Create environment」頁面的「Labels」專區中:

  1. 按一下「新增標籤」

  2. 在「Key」和「Value」欄位中,指定環境標籤的鍵/值組合。

gcloud

建立環境時,--labels 引數會指定以逗號分隔的鍵/值清單,並附上環境標籤。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "SERVICE_ACCOUNT" \
    --labels LABELS

取代:

  • LABELS 包含環境標籤的半形逗號分隔 KEY=VALUE 組合清單。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.6 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --labels owner=engineering-team,env=production

API

建立環境時,請在「環境」資源中指定環境的標籤。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "labels": {
    "LABEL_KEY": "LABEL_VALUE"
  }
}

取代:

  • LABEL_KEY 與環境標籤的鍵。
  • LABEL_VALUE,其值為環境標籤。

範例:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "labels": {
    "owner": "engineering-team",
    "env": "production"
  }
}

Terraform

建立環境時,請在 labels 區塊 (config 區塊外) 中指定標籤。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  labels = {
    LABEL_KEY = "LABEL_VALUE"
  }

}

取代:

  • LABEL_KEY 與環境標籤的鍵。
  • LABEL_VALUE,其值為環境標籤。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  labels = {
    owner = "engineering-team"
    env = "production"
  }

}

後續步驟