設定環境變數

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 保留的變數名稱。您無法建立這些名稱的變數。

  • AIRFLOW_DATABASE_VERSION
  • AIRFLOW_HOME
  • AIRFLOW_SRC_DIR
  • AIRFLOW_WEBSERVER
  • AUTO_GKE
  • CLOUDSDK_METRICS_ENVIRONMENT
  • CLOUD_LOGGING_ONLY
  • COMPOSER_AGENT_BUILD_SERVICE_ACCOUNT
  • COMPOSER_ENVIRONMENT
  • COMPOSER_GKE_LOCATION
  • COMPOSER_GKE_NAME
  • COMPOSER_GKE_ZONE
  • COMPOSER_LOCATION
  • COMPOSER_OPERATION_UUID
  • COMPOSER_PYTHON_VERSION
  • COMPOSER_VERSION
  • CONTAINER_NAME
  • C_FORCE_ROOT
  • DAGS_FOLDER
  • GCP_PROJECT
  • GCP_TENANT_PROJECT
  • GCSFUSE_EXTRACTED
  • GCS_BUCKET
  • GKE_CLUSTER_NAME
  • GKE_IN_TENANT
  • GOOGLE_APPLICATION_CREDENTIALS

  • GOOGLE_CLOUD_PROJECT

  • MAJOR_VERSION

  • MINOR_VERSION

  • PATH

  • PIP_DISABLE_PIP_VERSION_CHECK

  • PORT

  • PROJECT_ID

  • PYTHONPYCACHEPREFIX

  • PYTHONWARNINGS

  • REDIS_PASSWORD

  • REDIS_PORT

  • REDIS_USER

  • SQL_DATABASE

  • SQL_HOST

  • SQL_INSTANCE

  • SQL_PASSWORD

  • SQL_PROJECT

  • SQL_REGION

  • SQL_USER

為新環境設定環境變數

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

為現有環境設定環境變數

主控台

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

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

    前往「環境」

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

  3. 前往「環境變數」分頁,然後按一下「編輯」

  4. 新增、變更或刪除環境的環境變數:

    • 在「Name」欄位中指定變數名稱。
    • 在「Value」欄位中,指定變數值。
    • 如要新增其他變數,請按一下「新增環境變數」
    • 如要刪除變數,請將游標懸停在變數上,然後按一下「刪除項目」

gcloud

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

  • --update-env-variables 指定要建立或更新的環境變數清單,以半形逗號分隔。

  • --remove-env-variables 會指定要刪除的環境變數清單 (以半形逗號分隔)。

  • --clear-env-variables 會刪除所有現有的環境變數。

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

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。
  • NAME 與您要建立或更新的變數名稱。
  • VALUE 與變數的值。
  • 如要新增多個變數,請以半形逗號分隔定義:NAME=VALUE,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"
          }
        }
      }
    }
    

    取代:

    • VAR_NAME 與環境變數名稱。
    • VAR_VALUE 與環境變數的值。
    • 如要新增多個變數,請將變數的額外項目新增至 envVariables

範例:

// 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"
      }

    }
  }
}

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。
  • VAR_NAME 與環境變數名稱。
  • VAR_VALUE 與環境變數的值。
  • 如要新增多個變數,請將變數的額外項目新增至 env_variables

範例:

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"
      }
    }
  }
}

後續步驟