設定環境變數

Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)

本頁說明如何在 Managed Airflow 環境中設定環境變數。

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

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

環境變數會持續存在。指定環境變數後,除非您從環境中移除該變數,否則 Airflow 會持續使用。

Managed Service for Apache Airflow 會設定自己的保留環境變數,用於控管環境。

姓名格式

環境變數必須符合規則運算式 [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 設定選項

保留變數

Managed Airflow 保留下列變數名稱。您無法使用這些名稱建立變數。

  • 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_ENVIRONMENT_SIZE
  • 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
  • GCE_METADATA_TIMEOUT
  • 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」欄位中,指定變數名稱。
    • 在「值」欄位中,指定變數值。
    • 如要新增變數,請按一下「新增環境變數」
    • 如要刪除變數,請將指標懸停在變數上,然後按一下「刪除項目」

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

後續步驟