Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明如何在 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
- GCE_METADATA_TIMEOUT
- GCP_PROJECT
- GCP_TENANT_PROJECT
- GCSFUSE_EXTRACTED
- GCS_BUCKET
- GKE_CLUSTER_NAME
- GKE_IN_TENANT
- GOOGLE_APPLICATION_CREDENTIALS
- 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
為新環境設定環境變數
建立環境時,您可以指定環境變數。詳情請參閱「建立環境」。
為現有環境設定環境變數
主控台
如要為現有環境設定環境變數,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Environments」頁面。 
- 在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。 
- 前往「環境變數」分頁,然後按一下「編輯」。 
- 為環境新增、變更或刪除環境變數: - 在「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 要求。
在這個要求中:
- 在 - updateMask參數中,指定- config.softwareConfig.envVariables遮罩,將所有現有變數取代為指定變數。系統會刪除未指定的變數。
- 在要求主體中指定變數和值: - { "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" {
  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" {
  name = "example-environment"
  region = "us-central1"
  config {
    software_config {
      env_variables = {
        EXAMPLE_VARIABLE = "True"
        ANOTHER_VARIABLE = "test"
      }
    }
  }
}