Desplegar Flask en Elastic Beanstalk
Clase 15 de 36 • Curso Práctico de AWS Cloud
Contenido del curso
Introducción a la oferta de AWS y sus interacciones
- 4

Elastic Beanstalk: arquitectura escalable en AWS
05:26 min - 5

EC2: conceptos clave y configuración básica
07:04 min - 6

Crear instancia EC2 en AWS gratuita
09:54 min - 7

Conectarse por SSH a instancias EC2 desde Windows
10:07 min - 8

Conectar a instancia S2 desde Linux con SSH
02:11 min - 9

Conectar Mac a instancia EC2 con Terminal
02:31 min - 10

Proyecto Flask en EC2 con GitHub
04:08 min - 11

Cómo desplegar Flask en AWS con puertos y dependencias
06:20 min - 12

Qué es Lambda de Amazon y por qué es serverless
07:29 min - 13

Función AWS Lambda en Python desde la consola
07:09 min
Elastic Beanstalk
Bases de Datos
- 19

Amazon RDS: prestaciones enterprise sin data center
02:36 min - 20

RDS Postgres: optimizaciones y respaldos AWS
06:59 min - 21

Crear una base de datos PostgreSQL en AWS RDS
05:06 min - 22

Importar dump de Postgres en AWS RDS
04:38 min - 23

Aurora PG: 3x más rápido que RDS Postgres
04:12 min - 24

Creando Aurora PostgreSQL en AWS
11:58 min - 25

Respaldos en RDS Postgres: cuándo y cómo
02:50 min
Redes
Herramientas de administración
Seguridad
Bonus
Cierre del curso
Despliega con seguridad tu proyecto en Elastic Beanstalk usando Python y Flask. Aquí verás cómo crear el entorno, realizar el primer deployment, adaptar tu código a WSGI (clave: renombrar a application.py y añadir application = app), y configurar escalado con load balancer, monitoreo y rollback. Todo directo, sin rodeos y listo para producción.
¿Cómo crear y desplegar una aplicación en Elastic Beanstalk?
Para iniciar, entra a la consola, abre All Services si está colapsado y ve a Elastic Beanstalk. Crea una nueva aplicación: asigna nombre, elige plataforma y arranca con la aplicación de ejemplo para que el entorno provisionado funcione de inmediato.
- Da clic en crear aplicación: se aprovisiona un Elastic Load Balancer, una instancia con Python y la red asociada.
- Observa eventos: verás cuándo se actualiza el ambiente y cuándo termina el deployment de la nueva versión.
- Usa la URL generada: primero apunta a la app por defecto y luego servirá tu zip con el código.
- Puertos y seguridad: se abren 80 para HTTP y 443 para HTTPS; antes trabajaste en 5000.
¿Qué plataformas y versiones puedes elegir?
Puedes seleccionar entre múltiples plataformas preconfiguradas: Docker, Java Enterprise con Tomcat, .NET en Windows con IIS, Go o Python. En el ejemplo se usa Python 3.6 sobre Elastic Beanstalk para una app con Flask.
¿Cómo empaquetar y mover versiones entre ambientes?
Sube un zip con tu código para cada deployment. Esto permite operar con ambientes de desarrollo, test y producción, y colaborar con QA de forma ordenada.
- Sube el zip a desarrollo: valida con tu equipo o amigo de QA.
- Promueve la versión: de desarrollo a test y luego a producción.
- Si algo falla: aplica rollback en minutos.
¿Qué cambios de código exige WSGI y Beanstalk?
La clave está en cumplir el estándar WSGI: Elastic Beanstalk busca un archivo llamado exactamente application.py que exponga un objeto application. Si no existe, marca incompatibilidad con WSGI aunque el resto esté correcto.
- Cambia el nombre: de app.py a application.py.
- Expón el objeto WSGI: añade application = app.
- Crea la carpeta .evextensions: ahí defines la configuración de Flask para que el entrypoint sea application.py.
¿Cómo adaptar app.py a application.py?
El código es el mismo: solo cambia el nombre del archivo y añade la referencia WSGI.
# application.py (antes era app.py)
# ... código existente de Flask ...
application = app # línea clave para Elastic Beanstalk y WSGI
- Sigue usando Flask y tus rutas.
- No cambia la lógica: solo el nombre del archivo y la exposición de application.
¿Qué hace la carpeta .evextensions?
Contiene la configuración para que Elastic Beanstalk conozca la app WSGI de Flask: ahí se indica que el archivo de entrada es application.py. Sin esto, no se ejecuta correctamente.
¿Cómo escalar, monitorear y recuperar versiones en Elastic Beanstalk?
Desde la configuración del ambiente puedes pasar de single instance a load balanced. El servicio crea por ti el load balancer, más instancias, permisos y conexiones, manteniendo la misma URL.
¿Cómo configurar un load balancer y autoescalado?
Define capacidad mínima y máxima, y las políticas para crecer o reducir según demanda.
- Cambia a entorno balanceado: confirma el cambio y la consola hará el aprovisionamiento.
- Reglas de escalado: por utilización de CPU, ancho de banda, latencia o salud del servidor.
- Incrementos personalizados: escala de 1 a 5, 10 o 15 instancias si esperas picos fuertes.
- Control de crecimiento: ajusta cuánto crece y decrece según tu tráfico.
¿Qué monitoreo y logs tienes disponibles?
Consulta salud, número de instancias, tiempo en ejecución y estado general. Activa métricas extendidas para más detalle.
- Métricas: uso de CPU, red entrante y saliente, y más si habilitas métricas extra.
- Logs y salud: solicita logs y revisa si las instancias están en ok o rotas.
- Parámetros del ambiente: tipo de máquina micro, monitoreo cada cinco minutos y almacenamiento de ocho gigas.
¿Cómo hacer rollback rápido?
La consola guarda versiones históricas: puedes volver atrás si un deployment falla.
- Historial de versiones: conserva hasta mil versiones por aplicación y ambiente.
- Reversión inmediata: selecciona la versión anterior y despliega de nuevo.
- Verificación: revisa la URL tras el rollback y confirma que todo responde.
Además, podrás asignar un alias más claro con Route 53 y explorar almacenamiento en S3 y Glacier para tu código o archivos estáticos en las siguientes prácticas.
¿Te quedó alguna duda sobre el cambio a application.py, el escalado con load balancer o el rollback? Comparte tus preguntas y cuéntame qué parte te gustaría profundizar.