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