환경 변수 설정하기

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 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_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
  • MAJOR_VERSION
  • MINOR_VERSION
  • PATH
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PORT
  • PROJECT_ID
  • PYTHONPYCACHEPREFIX
  • PYTHONWARNINGS
  • SQL_DATABASE
  • SQL_HOST
  • SQL_INSTANCE
  • SQL_PASSWORD
  • SQL_PROJECT
  • SQL_REGION
  • SQL_USER

새 환경의 환경 변수 설정

환경을 만들 때 환경 변수를 지정할 수 있습니다. 자세한 내용은 환경 만들기를 참조하세요.

기존 환경의 환경 변수 설정

콘솔

기존 환경의 환경 변수를 설정하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  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 마스크를 지정하여 모든 기존 변수를 지정된 변수로 바꿉니다. 지정하지 않은 변수는 삭제됩니다.

  2. 요청 본문에서 변수와 해당 값을 지정합니다.

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

다음 단계