# Tema 4 · 7 · Panel Streamlit y seguridad del Data Lake (opcional) Diapositivas del Tema 4: no hay una diapositiva específica en el README original; es material de apoyo del laboratorio (el panel lee los datos de NYC de [04.03](04.03-nyctaxi/README.md)). Duración: 10 a 15 minutos. Coste: **la instancia EC2 cuesta unos 0,19 USD por hora** (unos 4,6 USD al día) si tu cuenta no la cubre con el plan gratuito; **se apaga sola a las 4 horas** (se para, no se borra); para más tiempo, `./gestionar-datalake.sh crear` (otras 4 h) o `crear --permanente`. ## Qué vas a hacer Vas a abrir el panel web «NYC Yellow Taxi - Data Lake Demo» que despliega el stack en una instancia EC2 y a entender qué riesgos de seguridad tiene el laboratorio (puerto 8501 abierto, usuario `DataLakeAdmin` opcional). No tiene ejercicio evaluable: es para ver tus datos en un panel. **Qué se crea en AWS:** nada nuevo. La instancia EC2 `g214-datalake-demo-demo-ec2` ya la creó el stack de [04.01](04.01-creardatalake/README.md) si lo lanzaste con `CREATE_EC2=true` (el valor por defecto). ## Qué contiene esta carpeta | Fichero | Para qué sirve | Paso en que se usa | |---|---|---| | `README.md` | Esta guía (no hay scripts ni SQL: no hay nada que subir a CloudShell) | Todos | ## Antes de empezar - Necesitas el Data Lake de [04.01](04.01-creardatalake/README.md) **creado con la instancia EC2** (`CREATE_EC2=true`, el valor por defecto; con `CREATE_EC2=false` no hay panel). - Necesitas **los datos de NYC de [04.03 NYC Taxi](04.03-nyctaxi/README.md)** ya cargados (`./gestionar-nyc-taxi.sh`). - Una red que deje abrir `http://...:8501`. Región `eu-north-1`. ## Cómo llevar los ficheros a CloudShell No hace falta: esta carpeta solo tiene este README. Puedes leerlo en tu PC. ## Paso a paso ### Paso 1 · Abrir el panel 1. Copia `StreamlitURL` de los Outputs (consola: CloudFormation > tu stack > Outputs; script de [04.01](04.01-creardatalake/README.md): opción 4 del menú o `./gestionar-datalake.sh estado` (la dirección cambia si la EC2 se ha parado y arrancado); o el fichero `datos.txt`). Tiene la forma `http://:8501`. 2. Ábrela en el navegador con `http://` (no `https`). 3. Qué verás: la página «NYC Yellow Taxi - Data Lake Demo» con dos botones, «Abrir Dashboard Temporal» (cuatro KPI del mes, viajes por hora, tarifa media por hora y hora pico) y «Abrir Explorador de Rutas» (tabla de las rutas más frecuentes con un deslizador «Top N rutas» de 5 a 50 y un gráfico de dispersión de viajes frente a tarifa media). La portada solo anuncia lo que las páginas hacen: no hay análisis por día de la semana ni mapas. La barra lateral lista tres entradas (`app`, `app rutas`, `app temporal`) y en ella eliges el mes. Si escribes la dirección a mano, las páginas son `http://:8501/app_temporal` y `http://:8501/app_rutas` (no `/temporal`: da «Page not found»). 4. **Los números del panel no coinciden con los de Athena sobre la tabla raw**: el panel descarta los viajes con distancia, tarifa o duración no positivas (por ejemplo, en septiembre de 2025 el panel cuenta 3.838.405 viajes y la tabla raw, 4.251.015). Si no carga justo después de crear el stack, espera unos minutos: la instancia sigue instalando programas cuando el stack ya figura como creado. Si sale «No hay datos», ejecuta antes `./gestionar-nyc-taxi.sh` ([04.03](04.03-nyctaxi/README.md)). ### Paso 2 · Entender la seguridad del panel El panel abre el puerto 8501 a Internet sin contraseña (por defecto a cualquiera, `0.0.0.0/0`) y no abre el 22: la instancia no tiene clave SSH. Para limitarlo a tu ordenador, crea el stack con `STREAMLIT_CIDR=/32 ./gestionar-datalake.sh` (tu IP pública, la de tu PC, que ves en `https://checkip.amazonaws.com`; no la de CloudShell). Eso se decide al crear el stack, en [04.01](04.01-creardatalake/README.md). ### Paso 3 · El usuario `DataLakeAdmin` (seguridad) La plantilla puede crear un usuario IAM llamado `DataLakeAdmin` con permisos de administrador sobre TODA tu cuenta, con una contraseña fija (la misma para todos) y una clave de acceso cuya parte secreta saldría en los Outputs y en `datos.txt`. Era una comodidad para una demostración en clase y es un riesgo en una cuenta real, así que **ahora no se crea**: el parámetro `CreateDemoAdminUser` vale `false` por defecto, el script `gestionar-datalake.sh` no lo cambia y el laboratorio funciona con tu propia sesión. - Para comprobar que no existe: IAM > Users no debe listar `DataLakeAdmin`, y los Outputs del stack no deben incluir `DataLakeAdminPassword` ni las claves. - Solo existirá si, a propósito, creas el stack desde la consola con `CreateDemoAdminUser` = `true`. No lo hagas salvo que tu docente te lo pida para una demostración. - Si lo activaste: no inicies sesión con él, no compartas capturas de los Outputs ni subas `datos.txt` a ningún sitio, y desaparece cuando eliminas el stack. Para reducir el riesgo mientras dure: IAM > Users > `DataLakeAdmin` > Security credentials: desactiva la clave de acceso (Deactivate) y cambia la contraseña de consola. No borres el usuario a mano; deja que lo borre el stack. ## Errores frecuentes | Qué ves | Causa | Solución | |---|---|---| | La URL de Streamlit no carga | La instancia aún se está preparando, el navegador fuerza `https`, o tu red bloquea el puerto 8501 | Espera unos minutos, usa `http://`, y prueba desde otra red. `/temporal` da «Page not found»: usa `/app_temporal` | | «No hay datos» en el panel | No has cargado NYC Taxi | Ejecuta `./gestionar-nyc-taxi.sh` ([04.03](04.03-nyctaxi/README.md)) | | No hay `StreamlitURL` en los Outputs | El stack se creó con `CREATE_EC2=false` | Es normal; el panel es opcional | | Los números no coinciden con Athena | El panel descarta viajes con distancia, tarifa o duración no positivas | Es lo esperado (paso 1, punto 4) | ## Limpieza Solo lo de esta actividad (el stack NO se borra aquí: se borra al final del Tema 4 desde [04.01](04.01-creardatalake/README.md), y debe ser lo último): 1. **Apaga la instancia** si vas a conservar el stack unos días: se apaga sola a las 4 horas, o antes con EC2 > Instances > selecciona `g214-datalake-demo-demo-ec2` > Instance state > Stop. Para arrancarla y ampliar el plazo, `./gestionar-datalake.sh crear` (la dirección pública del panel cambia: `estado` la muestra). Detenida deja de costar por hora de cómputo (el disco sigue costando céntimos). 2. Si vas a borrar el stack, no hace falta: la instancia se borra con él. 3. Si activaste `DataLakeAdmin`, se va con el stack; mientras tanto, aplica las medidas del paso 3. ## Cómo sabes que has terminado - [ ] Has abierto el panel con `http://` y has visto el Dashboard Temporal y el Explorador de Rutas (o sabes que tu stack se creó sin EC2). - [ ] Sabes explicar por qué los números del panel no coinciden con los de la tabla raw. - [ ] IAM > Users no lista `DataLakeAdmin`. - [ ] Has apagado la instancia EC2 o tienes claro que la borrará el stack al final. Anterior: [04.06 Optimizar y presupuesto](04.06-optimizarpresupuesto/README.md) · Siguiente: ninguna. Vuelve a [04.01 · Limpieza final](04.01-creardatalake/README.md#limpieza-final-para-no-dejar-nada-facturando) para borrar el stack.