設定環境變數 (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 保留的變數名稱。您無法建立這些名稱的變數。
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
為新環境設定環境變數
建立環境時,您可以指定環境變數。詳情請參閱「建立環境」。
為現有環境設定環境變數
主控台
如要為現有環境設定環境變數,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Environments」頁面。
前往「環境」 - 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
- 前往「環境變數」分頁,然後按一下「編輯」。
- 新增、變更或刪除環境的環境變數:
- 在「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 要求。
在這個要求中:
- 在
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" {
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"
}
}
}
}