# Despliegue en Apache Airflow ## Qué se despliega - DAG: `dag_save_url_ftp.py` - Módulo Python: `SaveUrl.py` (debe ser importable por el DAG) ## Ruta esperada por el DAG En `dag_save_url_ftp.py` se define un `sys.path.insert`: - `sys.path.insert(0, '/opt/airflow/dags/save_url_ftp')` Por tanto, dentro del contenedor/host donde corre Airflow, se espera: - `/opt/airflow/dags/save_url_ftp/SaveUrl.py` - `/opt/airflow/dags/save_url_ftp/dag_save_url_ftp.py` > Si tu instalación usa otra ruta de `dags_folder`, ajusta el montaje/volumen para que esa estructura exista dentro del runtime. ## Parámetros del DAG En `dag_save_url_ftp.py`: - `dag_id`: `save_url_ftp` - schedule: `0 */2 * * *` (cada 2 horas) - `retries`: 2 - `retry_delay`: 5 minutos - `catchup`: `False` - `max_active_runs`: 1 Estructura de tareas: - `inicio` (EmptyOperator) → `save_url_ftp` (PythonOperator) → `fin` (EmptyOperator) ## Variables de Airflow necesarias Define las Variables descritas en `03_CONFIGURACION_VARIABLES.md`. En particular, `SaveUrl.py` requiere: - `WEBHOOK_URL_NOTIFICATION` - `BOOTSTRAP_SERVERS_DOCKER` - `KAFKA_USE_SSL` - `FTP_000oqta_SERVER`, `FTP_000oqta_USER`, `FTP_000oqta_PASSWORD` - `DB_MSSQ_USER`, `DB_MSSQ_PASSWORD`, `DB_MSSQ_SERVER` ## Permisos y conectividad - **Worker/Scheduler** que ejecute el PythonOperator debe tener: - salida a red hacia FTP, SQL Server y Kafka - driver ODBC instalado (si se usa `pyodbc` en el worker) ## Operación esperada en Airflow Durante la ejecución, el task `save_url_ftp` escribe logs tipo: - inicio/final - estado por “BD” lógica (cada item de `INFORMATIONS`) - conteos: archivos FTP, registros existentes, registros a insertar Si ocurre un error en FTP/SQL/INSERT: - registra `FAILED` en Kafka - envía webhook con el mensaje de alerta - continúa con la siguiente “BD” (no falla toda la corrida por un único item) ## Checklist de despliegue - DAG visible y sin errores de importación - `SaveUrl.py` importable desde la ruta insertada en `sys.path` - Variables creadas (y protegidas si aplica) - Driver ODBC disponible en el runtime - Conectividad validada (FTP/SQL/Kafka/webhook)