Script que extraiga datos de una API pública y crear la tabla en Redshift para posterior carga de sus datos en una base de datos de Amazon Redshift. Corre en un container de Docker y esta embebido en un DAG de Airflow dentro del container. Airflow está configurado para mandar alertas por correo.
Este script de Python se conecta a la API de Spotify para extraer datos de la playlist Epic & Melodic y cargarlos en Amazon Redshift mediante un contenedor de docker que ejecuta el programa en un Dag de Airflow.
-
Credenciales en Spotify Developers
-
Credenciales de Amazon Redshift
-
Cuenta de correo electrónico
- Clona el repositorio o abre un codespace
git clone https://github.com/Aligehri/Final-Proyect-Data-Engineer.git
- Crea las carpetas necesarias
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d
- Crea y agrega credenciales para usar la api de Spotify
Abre tu cuenta de spotify en el siguiente link:
https://developer.spotify.com/
Ve al dashboard y crea una app. Llena los campos necesarios, debería verse así:
Después ve a los ajustes de tu app y copia el Client Id y el Client Secret que aprece en información básica.
Copialos y pegalos en el archivo Taskfile.yml con los siguientes nombres:
SPOTIPY_CLIENT_ID = ' '
SPOTIPY_CLIENT_SECRET = ' '
- Llena tus datos en el archivo Taskfile.yml
#Redshift Credentials:
user_rs = ''
pass_rs = ''
host_rs = ''
port_rs = 5439
database_rs = ''
schema = ''
#Email Info:
EMAIL=
EMAIL_PASSWORD=
SMTP_HOST=smtp.gmail.com
SMTP_STARTTLS=True
SMTP_SSL=False
SMTP_USER=
SMTP_PASSWORD=
SMTP_PORT=587
SMTP_MAIL_FROM=
#Spotify Credentials:
SPOTIPY_CLIENT_ID = ''
SPOTIPY_CLIENT_SECRET = ''
En el archivo ya está la plantilla con los datos que necesita.
- Ejecuta el siguiente código y espera a que finalice
./bin/task start_project
-
Abre la interfaz Airflow en el purto 8080
-
Agrega la conexión a Redshift en la interfaz de Airflowcon los mismos datos que agregaste en el archivo .env
-
Ejecuta el Dag en la interfaz de Airflow
Puedes ejecutar el programa sin Docker y Airflow usando el archivo main.py en la carpeta dags, pero primero tienes que crear el entorno virtual e instalar los requeriments.
cd dags
python main.py