¿Cómo instalar AirFlow en instancia EC2 y no morir en el intento? 🤔
Tags: airflow, ec2, aws, python
Published: 2024-03-19 22:25:08

En mi labor como ingeniero de datos he visto varias herramientas que me interesa conocer, pero algunas de ellas son más complicadas de utilizar localmente que otras. Una de estas herramientas es airFlow, he utilizado varios tutoriales para realizar la instalación local desde Ubuntu para Linux hasta con Docker, pero al fin en tantas búsquedas logre encontrar un paso a paso que lograr tener la instalación de una manera correcta y "sencilla".

Quiero compartir con ustedes lo que aprendí y como realizar dicha instalación.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p9fy2x7ol84fgrnunadb.gif)


1. ¿Qué es Apache AirFlow?

En mis propias palabras Airflow es un poderoso orquestador y automatizador de flujos de trabajo que se convierte en una herramienta aliada para todo profesional que está vinculado al mundo de la ciencia de datos.




2. configuración de instancia EC2 de AWS para la instalación de Apache AirFLow.



En nuestra consola de AWS buscamos el servicio de EC2 y lanzaremos una instancia con las siguientes características:

**Nombre **: ApacheAirflow
**AMI **: Ubuntu 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wwt2mbhqglkuhd0uppuo.png)

**Tipo de instancia **: T2.medium (preferiblemente, por temas de computo, pero puedes escoger instancia t2.micro que es de la capa gratuita)

**Crear Par de Claves** : tipo PEM, para lograr conexión SSH


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/domncyweace92jsdbd5n.png)

**Grupo de seguridad **: habilitado SSH, HTTP y HTTPS y TCP Personalizados, agregamos el puerto 8080



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l6xex4ldvdzdh4yaacv8.png)




**Almacenamiento**: Puedes seleccionar 8 GB, para este ejemplo lo deje en 20.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z65k6viid6s4q26u79z6.png)


Lanzamos instancia y esperamos a que esté disponible:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nry7owj2jioi9ckdep42.png)


Ahora seleccionamos nuestra nueva instancia y nos conectaremos por medio de opción por defecto que nos da AWS 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9v5r4ow25sjh7ixvtuof.png)



3. instalación de prerrequisitos en instancia Ubuntu

```
sudo apt update

sudo apt install python3-pip

sudo apt install sqlite3

sudo apt install python3.10-venv

python3 -m venv venv


```

Recuerda hacer uno por uno

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwdr05wuq3hkufi4ajrk.png)

Una vez instalado Python sqlite y venv, procederemos a la iniciación del ambiente en Python e instalación de librerías de ubuntu


```
source venv/bin/activate

sudo apt-get install libpq-dev

```


4. instalación de apache Airflow

Utilizaremos la base de datos Postgresql para el manejo de información de Airflow e iniciaremos AirFlow :


```
pip install "apache-airflow[postgres]==2.5.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.5.0/constraints-3.7.txt"

airflow db init

sudo apt-get install postgresql postgresql-contrib

```


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/609mte11jp6knyfstcu9.png)


Ingresamos dentro de Posgres para realizar la creación de la base de datos y usuario, allí asignaremos todos los privilegios.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w9s5o5jr8lytuyqsd9km.png)



```

sudo -i -u postgres

psql

CREATE DATABASE airflow;
CREATE USER airflow WITH PASSWORD 'airflow';
GRANT ALL PRIVILEGES ON DATABASE airflow TO airflow;

\q

logout

```

Ahora ya tenemos instalado Airflow con su base de datos PostgreSQL, ahora realizaremos algunas configuración internas dentro de apache para la ejecución correcta.


```
cd airflow

sed -i 's#sqlite:////home/ubuntu/airflow/airflow.db#postgresql+psycopg2://airflow:airflow@localhost/airflow#g' airflow.cfg

grep sql_alchemy airflow.cfg

grep executor airflow.cfg

sed -i 's#SequentialExecutor#LocalExecutor#g' airflow.cfg

grep executor airflow.cfg

```

Ahora crearemos las credenciales para el ingreso a Apache AirFlow:


```
airflow db init

airflow users create -u airflow -f airflow -l airflow -r Admin -e airflow@gmail.com
```

Nos va a pedir una contraseña escribimos: airflow y confirmamos :


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmg8xs8r1wa39xag7dce.png)


5. Iniciar Airflow :

Con este condigo lograremos iniciar tanto el webserver y scheduler :


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/plvghhulzp5iqb95r3sy.png)


```

airflow webserver &

airflow scheduler

```

Ahora si está todo listo para poder ingresar a Apache Airflow.

volvemos a nuestra consola de AWS y buscamos la instancia que acabamos de crear 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xmie4xqefmwm7tvbvu9x.png)


Copiamos el DNS de IPv4 publica y esa URL le sumamos el puerto 8080 de esta manera :


ec2-54-152-205.compute-1.amazonaws.com:8080

Usuario: airflow
pass : airflow

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zq3adegbw4hbh2m111kk.png)

y ahora tenemos Apache Airflow instalado en una instancia de EC2:



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11oaw40w1myzqz0gcwfp.png)


Espero que estos pasos les ayuden igual como me guio a mí en su momento.

Dejo URL en la cual me base para este proceso y créditos a Marc, un crack en esta herramienta:


https://www.youtube.com/watch?v=o88LNQDH2uI&t=619s


¡¡Gracias!!