Что такое Connections в Apache Airflow и для чего они используются

Ответ

В Apache Airflow Connections — это централизованный и безопасный способ хранения учетных данных (логинов, паролей, токенов, хостов) для подключения к внешним системам, таким как базы данных, облачные сервисы или API.

Они хранятся в зашифрованном виде в метабазе Airflow и управляются через UI, CLI или переменные окружения, что позволяет избежать жесткого кодирования секретов в коде DAG.

Ключевые преимущества

  • Безопасность: Секреты не хранятся в коде и не попадают в системы контроля версий.
  • Централизованное управление: Все подключения настраиваются в одном месте, что упрощает их обновление и аудит.
  • Переиспользование: Одно и то же подключение может использоваться в множестве DAG.
  • Абстракция: Разработчикам DAG не нужно знать конкретные учетные данные; они просто ссылаются на соединение по его Conn Id.

Пример использования в DAG

Сначала подключение создается в UI Airflow (Admin -> Connections) с Conn Id = my_postgres_db.

Затем в коде DAG оно используется для выполнения запроса с помощью хука:

from airflow.providers.postgres.hooks.postgres import PostgresHook
from airflow.decorators import task

@task
def get_data_from_postgres():
    """Извлекает данные из PostgreSQL, используя предопределенное подключение."""
    # Хук автоматически подтягивает креды из Connection с ID 'my_postgres_db'
    postgres_hook = PostgresHook(postgres_conn_id="my_postgres_db")
    connection = postgres_hook.get_conn()
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM users LIMIT 10;")
    records = cursor.fetchall()
    for record in records:
        print(record)