In Apache Airflow, le Connessioni e i Hooks sono componenti chiave per interagire con risorse esterne come database, API e sistemi di file. Questi strumenti ti permettono di automatizzare flussi di lavoro complessi collegandoti a fonti di dati e servizi esterni in modo sicuro e riutilizzabile.
Cos’è una Connection in Airflow
Una Connection memorizza le credenziali e i parametri di accesso a un sistema esterno. Ogni connessione è definita da:
- Conn Id: un identificatore univoco
- Conn Type: il tipo (Postgres, MySQL, HTTP, S3, ecc.)
- Host, Schema, Login, Password, Port
- Extra: parametri aggiuntivi in formato JSON
Come configurare le connessioni
1. Interfaccia Web
Vai su Admin > Connections nella UI di Airflow.
2. Variabili d’ambiente
export AIRFLOW_CONN_MY_POSTGRES_DB='postgresql://user:pass@host:5432/dbname'3. Secrets Backend
Per produzione, usa AWS Secrets Manager, HashiCorp Vault o Google Secret Manager.
Cos’è un Hook
Un Hook è un’interfaccia Python che utilizza una Connection per interagire con un sistema esterno. I Hooks più utilizzati:
- PostgresHook, MySqlHook, S3Hook, HttpHook, SlackHook
Esempio pratico
from airflow.providers.postgres.hooks.postgres import PostgresHook
def extract_data(**context):
hook = PostgresHook(postgres_conn_id='my_postgres_db')
records = hook.get_records("SELECT * FROM orders")
return recordsBest Practice
- Non inserire mai credenziali nel codice dei DAG
- Usa nomi di Connection ID descrittivi
- Utilizza un Secrets Backend in produzione
- Testa le connessioni dalla UI prima di usarle
Le Connessioni e i Hooks sono fondamentali per costruire pipeline di dati sicure e manutenibili in Apache Airflow.