设置环境变量

Cloud Composer 1 | Cloud Composer 2

本页面介绍如何在 Cloud Composer 环境中设置环境变量。

Cloud Composer 使用环境变量来更改 Airflow 或 DAG 的运行时行为。

环境变量具有持久性。您指定一个环境变量后,Airflow 会一直使用它,直到您从环境中移除该变量。

例如,Cloud Composer 使用 Apache Airflow SendGrid 模块发送电子邮件通知。如需配置电子邮件通知,您需要设置 SENDGRID_API_KEYSENDGRID_MAIL_FROM 环境变量。

姓名格式

环境变量必须与正则表达式 [a-zA-Z_][a-zA-Z0-9_]* 匹配。

环境变量不得指定 Apache Airflow 配置替换。 也就是说,这些变量不能使用 AIRFLOW__{SECTION}__{KEY} 格式,也不能匹配正则表达式 AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+

预留变量

以下名称均预留给系统,不得使用:

  • AIRFLOW_HOME
  • AIRFLOW_SRC_DIR
  • C_FORCE_ROOT
  • CLOUDSDK_METRICS_ENVIRONMENT
  • COMPOSER_ENVIRONMENT
  • COMPOSER_GKE_NAME
  • COMPOSER_GKE_ZONE
  • COMPOSER_LOCATION
  • COMPOSER_PYTHON_VERSION
  • CONTAINER_NAME
  • DAGS_FOLDER
  • GCP_PROJECT
  • GCS_BUCKET
  • GKE_CLUSTER_NAME
  • GOOGLE_APPLICATION_CREDENTIALS
  • KUBERNETES_PORT
  • KUBERNETES_PORT_443_TCP_PROTO
  • KUBERNETES_PORT_443_TCP_ADDR
  • KUBERNETES_PORT_443_TCP_PORT
  • KUBERNETES_PORT_443_TCP
  • KUBERNETES_SERVICE_HOST
  • KUBERNETES_SERVICE_PORT
  • KUBERNETES_SERVICE_PORT_HTTPS
  • MAJOR_VERSION
  • MINOR_VERSION
  • PROJECT_ID
  • SQL_DATABASE
  • SQL_INSTANCE
  • SQL_HOST
  • SQL_PASSWORD
  • SQL_PROJECT
  • SQL_REGION
  • SQL_USER

为新环境设置环境变量

您可以在创建环境时指定环境变量。如需了解详情,请参阅创建环境

为现有环境设置环境变量

控制台

如需为现有环境设置环境变量,请执行以下操作:

  1. 在 Google Cloud Console 中,转到环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境变量标签页,然后点击修改

  4. 为您的环境添加、更改或删除环境变量:

    • 名称字段中,指定变量名称。
    • 字段中,指定变量值。
    • 如需添加额外的变量,请点击添加环境变量
    • 如需删除变量,请将指针悬停在变量上,然后点击删除项

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 掩码将所有现有变量替换为指定变量。未指定的变量会被删除。
    • 使用 config.softwareConfig.envVariables.VAR_NAME 添加或更新特定变量。如需添加或更新多个变量,请使用英文逗号分隔多个掩码。
  2. 在请求正文中,指定变量及其值:

    {
      "config": {
        "softwareConfig": {
          "envVariables": {
            "VAR_NAME": "VAR_VALUE"
          }
        }
      }
    }
    

    替换:

    • VAR_NAME 替换为环境变量的名称。
    • VAR_VALUE 替换为环境变量的值。
    • 如需添加多个变量,请在 envVariables 中添加变量的额外条目。

示例:

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.envVariables.EXAMPLE_VARIABLE,
// config.softwareConfig.envVariables.ANOTHER_VARIABLE
{
  "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 {

      env_variables = {
        EXAMPLE_VARIABLE = "True"
        ANOTHER_VARIABLE = "test"
      }

  }
}

后续步骤