Configurar RDS con PostgreSQL en AWS

Clase 20 de 22Curso de Despliegue de Aplicaciones Python en la Nube

Resumen

Configurar AWS RDS con PostgreSQL te da una base sólida para producción: automatiza copias de seguridad, actualizaciones y seguridad, y además separa la carga de tu servidor web. Aquí verás el flujo completo desde la consola, la elección entre Standard y Easy Create, las decisiones de costo/rendimiento, la conectividad segura desde EC2 y la conexión con psql para crear tu base y apuntar tu aplicación.

¿Qué es RDS y cuándo conviene para PostgreSQL?

RDS es el servicio administrado de bases de datos de AWS. Es ideal para despliegues en producción porque reduce trabajo manual: respalda, actualiza y aplica ajustes estandarizados por la comunidad de AWS. Puedes crear bases con PostgreSQL e incluso Aurora, y dejar la versión por defecto si te benefician las actualizaciones automáticas.

  • Automatiza backups y actualizaciones del motor.
  • Activa cifrado con llave de encriptación por defecto para el disco de la instancia.
  • Usa instancias tipo DB (similar a EC2, pero administradas por Amazon).
  • Permite réplicas para alta disponibilidad entre zonas de disponibilidad.
  • Evita sobrecostos: dimensiona según usuarios y monitorea rendimiento.

Para pruebas y desarrollo, la opción Free Tier permite una instancia con 2 CPUs y 1 GB de RAM durante un año. Para cargas grandes, podrías requerir más memoria (por ejemplo, 64 GB), pero el costo aumenta notablemente.

¿Cómo crear la instancia en la consola de AWS?

Tras iniciar sesión, abre el dashboard y busca RDS. Entra a DB Instances y haz clic en Create database. Elige PostgreSQL (o Aurora si aplica) y define el modo de creación.

¿Standard Create o Easy Create?

  • Standard Create: te deja ajustar parámetros clave; útil para ver y controlar cada detalle.
  • Easy Create: usa valores por defecto recomendados; acelera la creación.

Puedes empezar con Standard pensando en producción, revisar versiones de PostgreSQL y dejar la predeterminada gracias a las actualizaciones automáticas. Para desarrollo, cambia a Easy Create y selecciona Free Tier.

¿Qué tamaño, almacenamiento y disponibilidad elegir?

  • Usuario administrador: deja postgres por defecto si se ajusta a tu caso.
  • Cifrado: conserva la llave de encriptación por defecto para proteger datos en disco.
  • Almacenamiento: selecciona IO Optimized para optimizar entradas y salidas.
  • Cómputo: verás instancias tipo DB; la infraestructura subyacente es gestionada por Amazon.
  • Disponibilidad: sin réplicas para crear más rápido; con réplicas tendrás continuidad en otra zona de disponibilidad.

Si notas que la configuración es costosa para tu objetivo, regresa y usa Easy Create con Free Tier (2 CPUs y 1 GB de RAM) y define nombre, usuario postgres y una contraseña segura (sin arrobas, slash ni comillas).

¿Cómo configurar la conectividad segura con EC2?

  • Evita que la base sea pública.
  • Permite acceso solo desde tu instancia EC2 (por ejemplo, “Python Server”).
  • El VPC y otros parámetros de red se heredan de la EC2 seleccionada.
  • Tras crearla, verás el endpoint, puerto, motor, región y que no es accesible públicamente.

¿Cómo conectar, crear base y apuntar tu app?

Cuando el estado indique que ya puedes conectarte (por ejemplo, “Haciendo backup”), usa el endpoint para validar acceso desde tu EC2 con psql, crea tu base y actualiza la cadena de conexión en tu archivo .env. Luego ejecuta tus migraciones para confirmar que todo funciona sobre RDS.

¿Comando psql para conectarte por endpoint?

Usa el endpoint como host, el usuario postgres y la base predeterminada postgres. Se te pedirá la contraseña.

psql -h <endpoint> -U postgres -d postgres

Si la conexión es correcta, ya estás en la base manejada por RDS.

¿Cómo crear una nueva base y asignar owner?

Crea una base para tu aplicación y asígnale propietario. Si usas guion en el nombre, inclúyelo entre comillas.

CREATE DATABASE "rds-platsy" OWNER postgres;

¿Cómo actualizar la cadena de conexión en .env y correr migraciones?

Edita el archivo .env y apunta a RDS con usuario, contraseña, endpoint, puerto y base.

DATABASE_URL=postgresql://postgres:<contraseña>@<endpoint>:<puerto>/rds-platsy

Recuerda: la contraseña no debe incluir arrobas, slash ni comillas. Guarda los cambios y ejecuta de nuevo tus migraciones para validar la conexión contra la base en RDS.

¿Con qué tamaño empezaste y cómo te fue con el rendimiento y los costos? Deja tus dudas y comenta tu experiencia para mejorar entre todos.