Commands
Apache Airflow

airflow connections add: Добавить connection через CLI: для автоматизации, CI/CD

Добавить connection через CLI: для автоматизации, CI/CD

Базовый синтаксис

Команда airflow connections add создает новое подключение в Airflow через командную строку. Это основа для автоматизации развертывания.

airflow connections add \
    my_postgres_conn \
    --conn-type postgres \
    --conn-host localhost \
    --conn-login airflow \
    --conn-password airflow

Разберем по частям:

  • my_postgres_conn — уникальный идентификатор подключения (conn_id), который используется в DAG.
  • --conn-type — тип системы (postgres, http, ssh, snowflake и т.д.).
  • --conn-host, --conn-login, --conn-password — параметры для доступа.

Полезные флаги

Помимо базовых, часто нужны флаги для тонкой настройки.

--conn-port — обязателен, если сервис работает не на стандартном порту.

airflow connections add \
    prod_clickhouse \
    --conn-type http \
    --conn-host clickhouse.prod.example.com \
    --conn-port 8443 \
    --conn-login report_user

--conn-extra — передает JSON-строку с дополнительными параметрами. Например, для S3 нужно указать регион и уровень доступа.

airflow connections add \
    s3_raw_data \
    --conn-type aws \
    --conn-extra '{"region_name": "eu-central-1", "role_arn": "arn:aws:iam::123456789012:role/airflow-s3"}'

Типичные сценарии

1. Настройка в CI/CD пайплайне. При деплое новой среды в скрипте развертывания создаются все подключения.

# Скрипт deploy.sh
airflow connections add \
    dwh_postgres \
    --conn-type postgres \
    --conn-host ${DWH_HOST} \
    --conn-login ${DWH_USER} \
    --conn-password ${DWH_PASSWORD} \
    --conn-schema analytics

2. Автоматическое создание тестовых подключений. Для разработки можно сгенерировать набор подключений к тестовым базам из скрипта.

#!/bin/bash
# Генерация подключений для тестового окружения
for tenant in tenant1 tenant2 tenant3; do
    airflow connections add \
        "test_db_${tenant}" \
        --conn-type postgres \
        --conn-host "test-db.${tenant}.internal" \
        --conn-login "reader" \
        --conn-password "test123"
done

Частые ошибки

1. Пробелы и кавычки в --conn-extra. JSON должен быть передан как одна строка. Всегда используйте одинарные кавычки для обертки.

# Неправильно: аргументы разбились на несколько слов
airflow connections add test_conn --conn-extra {"key": "value with spaces"}

# Правильно: весь JSON в одинарных кавычках
airflow connections add test_conn --conn-extra '{"key": "value with spaces"}'

2. Пароль в истории команд. Пароль, переданный через --conn-password, может сохраниться в истории shell. Для production используйте переменные окружения или флаг --conn-password без значения (интерактивный ввод), а лучше — секреты в Airflow.

# Безопаснее: пароль запросится интерактивно
airflow connections add prod_db \
    --conn-type postgres \
    --conn-host db.prod.example.com \
    --conn-login deploy_user \
    --conn-password