Crea una base de datos RDS con PostgreSQL

Resumen

Configurar una base de datos en producción puede ser complejo si lo haces manualmente, pero Amazon RDS simplifica el proceso al encargarse de copias de seguridad, actualizaciones y ajustes que normalmente harías a mano. Aquí aprenderás a crear una instancia RDS con PostgreSQL, conectarla desde EC2 y entender cuándo conviene usar el Free tier para desarrollo o una configuración productiva con alta disponibilidad.

¿Qué es Amazon RDS y por qué usarlo en producción?

RDS es el servicio de bases de datos administrado de AWS. En lugar de instalar PostgreSQL en un servidor y mantenerlo tú mismo, AWS se encarga de la infraestructura, las actualizaciones automáticas y los backups. Esto reduce el riesgo operativo y libera carga del servidor web [00:11].

¿Qué hace RDS por ti automáticamente? Gestiona copias de seguridad, aplica actualizaciones de motor (como PostgreSQL), administra la instancia EC2 subyacente y configura la encriptación del disco para proteger tus datos.

Desde el dashboard de RDS puedes ver todas tus instancias creadas y sus parámetros. Si no aparece en tu panel principal, búscalo directamente en la barra superior de AWS.

¿Cómo crear una instancia RDS para entorno productivo?

Entra a DB Instances y haz clic en Create database. Para tener control total de la configuración, elige Standard Create en lugar de Easy Create, que aplica valores por defecto sin mostrarte el detalle [01:20].

Estas son las decisiones clave durante la creación:

  • Motor: PostgreSQL con opción Aurora si necesitas mayor rendimiento.
  • Plantilla: Production crea varias instancias con alta disponibilidad; Dev/Test es para pruebas.
  • Identificador: en este caso, Platzi Database con usuario postgres.
  • Llave de encriptación: déjala por defecto para encriptar el disco duro y proteger los datos ante posibles intrusiones.
  • Almacenamiento: la opción IO Optimized prioriza el rendimiento de entradas y salidas frente al ahorro de costos.

Un detalle importante: la instancia que aparece en RDS es del mismo tipo que usarías para EC2, pero con el prefijo DB, lo que indica que Amazon la administra por ti.

¿Conviene activar réplicas y multi-AZ?

Las réplicas crean copias de la base de datos en distintas zonas de disponibilidad, de modo que si ocurre una catástrofe natural en una zona, tu base sigue operando en otra. Para esta demostración se omiten para acelerar la creación, pero en producción real son altamente recomendables [03:25].

¿Cómo configurar la conectividad sin exponer la base?

La conectividad es donde defines quién puede acceder. La mejor práctica es no hacer la base de datos pública: solo las IPs autorizadas deberían poder ejecutar queries, inserciones o actualizaciones.

Para lograrlo, AWS permite vincular directamente la instancia RDS a una instancia EC2 existente, en este caso el Python Server creado previamente. Al hacerlo, el VPC y otros parámetros de red se heredan automáticamente.

¿Cuándo usar el Free tier en lugar de una instancia productiva?

La configuración productiva con 64 GB de RAM puede ser muy costosa y solo se justifica con miles de usuarios concurrentes. Para proyectos pequeños o desarrollo, el Free tier ofrece un año gratis con una instancia de 2 CPU y 1 GB de RAM, suficiente para validar tu aplicación [04:30].

Para crearla rápido, vuelve a Create Database, elige Easy Create, selecciona PostgreSQL y marca Free tier. Define una contraseña segura respetando las reglas: sin arrobas, slash ni comillas.

¿Cómo conectar EC2 con RDS de forma segura? Asocia la instancia RDS a tu EC2 durante la creación. Esto restringe el acceso por security group y bloquea conexiones externas, incluso si alguien obtiene tu usuario y contraseña.

La base de datos no estará disponible al instante: pasa por un estado de creación mientras AWS levanta la instancia e instala PostgreSQL. Solo cuando aparece como activa puedes conectarte.

¿Cómo conectarte a tu instancia RDS desde EC2?

Una vez activa, copia el endpoint desde los detalles de la base. Este es el host al que apuntarás desde tu servidor.

Desde la terminal de EC2, ejecuta:

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

Ingresa la contraseña que definiste y estarás conectado a tu base administrada por RDS [06:40]. Si listas las tablas, verás que está vacía: las tablas locales no migran solas.

¿Cómo crear una base nueva y migrar tu aplicación?

Dentro de la sesión psql, crea la base con el owner correspondiente:

sql CREATE DATABASE rdsplatzi OWNER postgres;

Luego edita tu archivo .env y comenta la línea de la base local con #. Define la nueva variable de conexión con este formato:

postgresql://postgres:<password>@<host>:<puerto>/rdsplatzi

El puerto lo encuentras en el panel de RDS bajo Port. Guarda con :wq en vim y ejecuta tus migraciones nuevamente. Si todo está bien configurado, las migraciones correrán contra la instancia administrada por AWS [08:15].

Habilidades y conceptos clave que practicaste

  • Amazon RDS: servicio administrado de bases de datos relacionales que automatiza backups, actualizaciones y mantenimiento.
  • Standard Create vs Easy Create: el primero te da control granular; el segundo aplica configuraciones predefinidas.
  • IO Optimized: tipo de almacenamiento que prioriza rendimiento de lectura y escritura.
  • Multi-AZ y réplicas: estrategia para garantizar disponibilidad ante fallos en una zona.
  • Encriptación de disco: protege los datos en reposo, incluso ante accesos no autorizados al hardware.
  • Endpoint: dirección única que usas para conectarte a tu instancia desde clientes externos.
  • Security group con EC2: restringe el acceso a la base solo desde tu servidor de aplicación.

Como reto, busca los comandos para desinstalar PostgreSQL del servidor web y deja que toda la carga de base de datos viva en RDS. Cuéntame en los comentarios qué configuración elegiste y por qué.