環境変数を設定する

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

新しい環境に環境変数を設定する

環境変数は、環境の作成時に指定できます。詳細については、環境の作成をご覧ください。

既存の環境に環境変数を設定する

Console

既存の環境に環境変数を設定するには、次の手順を行います。

  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 マスクを指定して、既存のすべての変数を指定の変数に置き換えます。指定しない変数は削除されます。

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

次のステップ