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_VERSIONAIRFLOW_HOMEAIRFLOW_SRC_DIRAIRFLOW_WEBSERVERAUTO_GKECLOUDSDK_METRICS_ENVIRONMENTCLOUD_LOGGING_ONLYCOMPOSER_AGENT_BUILD_SERVICE_ACCOUNTCOMPOSER_ENVIRONMENTCOMPOSER_GKE_LOCATIONCOMPOSER_GKE_NAMECOMPOSER_GKE_ZONECOMPOSER_LOCATIONCOMPOSER_OPERATION_UUIDCOMPOSER_PYTHON_VERSIONCOMPOSER_VERSIONCONTAINER_NAMEC_FORCE_ROOTDAGS_FOLDERGCE_METADATA_TIMEOUTGCP_PROJECTGCP_TENANT_PROJECTGCSFUSE_EXTRACTEDGCS_BUCKETGKE_CLUSTER_NAMEGKE_IN_TENANTGOOGLE_APPLICATION_CREDENTIALSMAJOR_VERSIONMINOR_VERSIONPATHPIP_DISABLE_PIP_VERSION_CHECKPORTPROJECT_IDPYTHONPYCACHEPREFIXPYTHONWARNINGSREDIS_PASSWORDREDIS_PORTREDIS_USERSQL_DATABASESQL_HOSTSQL_INSTANCESQL_PASSWORDSQL_PROJECTSQL_REGIONSQL_USER
为新环境设置环境变量
您可以在创建环境时指定环境变量。如需了解详情,请参阅创建环境。
为现有环境设置环境变量
控制台
如需为现有环境设置环境变量,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境变量标签页,然后点击修改。
为您的环境添加、更改或删除环境变量:
- 在名称字段中,指定变量名称。
- 在值字段中,指定变量值。
- 如需添加额外的变量,请点击添加环境变量。
- 如需删除变量,请将指针悬停在变量上,然后点击删除项。
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"
}
}
}
}