設定環境變數 (original) (raw)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面說明如何在 Cloud Composer 環境中設定環境變數。

為 DAG 提供執行階段設定時,您可以使用環境變數做為 Airflow 變數的替代方案。Airflow 變數會在 Airflow 資料庫中設定,而環境變數則會在 Airflow 工作站的容器中設定。

舉例來說,您可以使用環境變數名稱,在由 BashOperator 執行的指令中使用,也可以從 DAG 中的 os.environ 物件取得這個值,或是改用 Airflow 變數。

環境變數會保留在系統中。指定環境變數後,Airflow 會持續使用該變數,直到您從環境中移除該變數為止。

Cloud Composer 會設定專屬的保留環境變數,用於控制環境。

姓名格式

環境變數必須符合 [a-zA-Z_][a-zA-Z0-9_]* 規則運算式。

Airflow 設定選項

您無法指定變數來變更 Apache Airflow 設定選項。

變數不得使用 AIRFLOW__{SECTION}__{KEY} 格式,或與規則運算式 AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+ 相符。例如,您無法設定 AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW

您可以改為覆寫 Airflow 設定選項

保留變數

以下是 Cloud Composer 保留的變數名稱。您無法建立這些名稱的變數。

為新環境設定環境變數

建立環境時,您可以指定環境變數。詳情請參閱「建立環境」。

為現有環境設定環境變數

主控台

如要為現有環境設定環境變數,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Environments」頁面。
    前往「環境」
  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
  3. 前往「環境變數」分頁,然後按一下「編輯」。
  4. 新增、變更或刪除環境的環境變數:
    • 在「Name」欄位中指定變數名稱。
    • 在「Value」欄位中,指定變數值。
    • 如要新增其他變數,請按一下「新增環境變數」。
    • 如要刪除變數,請將游標懸停在變數上,然後按一下「刪除項目」。

gcloud

下列引數可控制環境變數:

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --update-env-variables=NAME=VALUE

取代:

範例:

gcloud composer environments update \
  example-environment \
  --location us-central1 \
  --update-env-variables=EXAMPLE_VARIABLE=True,ANOTHER_VARIABLE=test

API

建構 environments.patch API 要求。

在這個要求中:

  1. updateMask 參數中,指定 config.softwareConfig.envVariables 遮罩,以便將所有現有變數替換為指定的變數。系統會刪除未指定的變數。
  2. 在要求主體中指定變數及其值:
{  
  "config": {  
    "softwareConfig": {  
      "envVariables": {  
        "VAR_NAME": "VAR_VALUE"  
      }  
    }  
  }  
}  

取代:

範例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.envVariables
{
  "config": {
    "softwareConfig": {
      "envVariables": {
        "EXAMPLE_VARIABLE": "True",
        "ANOTHER_VARIABLE": "test"
      }
    }
  }
}

Terraform

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

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

  config {

    software_config {

      env_variables = {
        VAR_NAME = "VAR_VALUE"
      }

    }
  }
}

取代:

範例:

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

  config {

    software_config {

      env_variables = {
        EXAMPLE_VARIABLE = "True"
        ANOTHER_VARIABLE = "test"
      }
    }
  }
}

後續步驟