Tutorial sobre cómo crear aplicaciones en Amazon Web Services (AWS)
Amazon Web Services (AWS) es una de las plataformas de computación en la nube más populares del mundo. Con AWS, puedes crear y ejecutar aplicaciones sin necesidad de comprar servidores físicos, configurar espacio de servidor ni mantener tu propia infraestructura. Este artículo te guiará en la creación de una aplicación sencilla en AWS mediante un enfoque común: implementar una aplicación web utilizando servicios de computación (EC2), una base de datos administrada (RDS) como opción, y almacenamiento y un dominio si es necesario. Si bien el siguiente ejemplo es general, puedes aplicarlo a muchos tipos de aplicaciones.
-
1. Preparación inicial: Contabilidad y conceptos básicos
Antes de empezar, asegúrate de tener una cuenta de AWS. Muchos servicios de AWS ofrecen un nivel gratuito (sin coste alguno dentro de ciertos límites) que es perfecto para practicar.
Algunos conceptos importantes que debes comprender:
– Región: Ubicación del centro de datos de AWS (ejemplo: Singapur/ap-southeast-1). Elija la región más cercana para obtener una baja latencia.
– IAM (Gestión de Identidades y Accesos): un sistema de gestión de accesos. Buena práctica: no utilice la cuenta de administrador para el trabajo diario.
– VPC (Nube Privada Virtual): una red virtual donde se ejecutan sus servicios.
– Grupo de seguridad: “cortafuegos” para regular el acceso entrante/saliente desde el servidor.
Al comprender estos cuatro aspectos, le resultará mucho más fácil familiarizarse con los conceptos básicos de AWS.
-
2. Crear usuarios de IAM y cuentas seguras
La seguridad es siempre nuestra máxima prioridad. Inicie sesión en la consola de AWS como usuario root y, a continuación:
1. Abra el servicio IAM.
2. Cree un nuevo usuario (por ejemplo, `admin-dev`) y marque la casilla Proporcionar acceso de usuario a la consola de administración de AWS.
3. Otorgar permisos: para practicar, puede usar AdministratorAccess (aunque en proyectos reales debería ser más limitado).
4. Habilite la autenticación multifactor (MFA) para aumentar la seguridad.
Una vez hecho esto, cierre la sesión como usuario root e inicie sesión con el usuario IAM recién creado.
-
3. Determinar la arquitectura de la aplicación.
Para este tutorial, construiremos una arquitectura simple:
– EC2: para ejecutar aplicaciones web (por ejemplo, Node.js/Express, Python Flask o PHP).
– RDS opcional: base de datos MySQL/PostgreSQL administrada, para que los datos se almacenen de forma ordenada.
– S3 (opcional): almacena archivos estáticos como imágenes, documentos o copias de seguridad.
– Ruta 53 (opcional): gestionar dominios.
– CloudWatch: monitorización básica.
Si estás empezando, concéntrate primero en usar EC2 para ejecutar tus aplicaciones.
-
4. Crea un servidor EC2.
a) Crear una instancia
1. Inicie sesión en el servicio EC2.
2. Haga clic en Iniciar instancia.
3. Seleccione el sistema operativo, por ejemplo Ubuntu Server 22.04 LTS.
4. Seleccione el tipo de instancia: para el nivel gratuito utilice `t2.micro` o `t3.micro` (sujeto a disponibilidad).
5. Cree o seleccione un par de claves (por ejemplo, `aws-key.pem`). Guarde el archivo `.pem` en un lugar seguro, ya que se utilizará para SSH.
b) Configuración de red y cortafuegos
– Asegúrate de que la instancia esté en la VPC predeterminada (solo para practicar).
– Establecer grupo de seguridad:
– Puerto 22 (SSH) solo desde tu IP (por ejemplo, `Mi IP`)
– Puerto 80 (HTTP) de `0.0.0.0/0` (público)
– Puerto 443 (HTTPS) desde `0.0.0.0/0` si posteriormente se utiliza SSL.
Nota: Abrir SSH al público es arriesgado. Restrinja siempre las direcciones IP.
Haz clic en Iniciar y espera a que se ejecute la instancia.
-
5. Iniciar sesión en el servidor a través de SSH
En Windows, puedes usar WSL o PuTTY. En macOS/Linux, puedes hacerlo directamente desde la terminal.
1. Cambiar clave de permisos:
"Bash
chmod 400 aws-key.pem
"`
2. Conéctese al servidor mediante SSH (use la IPv4 pública de EC2):
"Bash
ssh -i aws-key.pem ubuntu@PUBLIC_IP
"`
Si todo sale bien, estarás en el servidor Ubuntu de AWS.
-
6. Instalar el servidor web y el entorno de ejecución de la aplicación.
Aquí tenéis un ejemplo de una aplicación Node.js, ya que es una tecnología muy utilizada en la web moderna.
a) Actualizar e instalar dependencias
"Bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
"`
b) Instalar Node.js (versión LTS)
"Bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
nodo -v
npm -v
"`
-
7. Crea una aplicación sencilla.
Crea una carpeta de proyecto:
"Bash
mkdir myapp && cd myapp
npm inicializar -y
npm instalar express
"`
Crea un archivo `index.js`:
“`js
const express = require(“express”);
const aplicación = express();
app.get("/", (req, res) => {
res.send(“¡Hola! Tu aplicación se está ejecutando en AWS EC2.”);
});
app.listen(3000, () => console.log(“Servidor ejecutándose en el puerto 3000”));
"`
Ejecuta la aplicación:
"Bash
nodo index.js
"`
Intenta acceder desde un navegador:
– `http://PUBLIC_IP:3000`
Sin embargo, el puerto 3000 no está abierto actualmente en el Grupo de seguridad. Puede:
1) abrir el puerto 3000 en el Grupo de seguridad, o
2) utilice un proxy inverso (más recomendable) para que la aplicación permanezca en un puerto interno pero se pueda acceder a ella a través de los puertos 80/443.
-
8. Uso de Nginx como proxy inverso (acceso a través del puerto 80)
Instalar Nginx:
"Bash
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
"`
Configurar Nginx:
"Bash
sudo nano /etc/nginx/sites-available/myapp
"`
Contenido de configuración:
“`nginx
servidor {
escuchar 80;
nombre del servidor _;
ubicación /
contraseña_proxy http://127.0.0.1:3000;
proxy_http_versión 1.1;
actualización de proxy_set_header $ http_upgrade;
proxy_set_header Conexión 'upgrade';
proxy_set_header Host $ host;
proxy_cache_bypass $http_upgrade;
}
}
"`
Habilitar configuración:
"Bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl recargar nginx
"`
Ahora acceda:
– `http://PUBLIC_IP/`
La aplicación se ejecuta en el puerto 3000, pero el público accede a ella a través del puerto 80.
-
9. Ejecución persistente de aplicaciones con PM2
Para evitar que la aplicación falle cuando se desconecta SSH, utilice PM2:
"Bash
sudo npm install -g pm2
pm2 iniciar index.js –nombre miaplicación
pm2 guardar
Inicio de pm2
"`
El comando `pm2 startup` proporcionará instrucciones adicionales. Ejecute el comando que aparece en pantalla para que la aplicación se ejecute automáticamente al reiniciar el servidor.
-
10. (Opcional) Agregar una base de datos con RDS
Si su aplicación requiere una base de datos, RDS lo facilita porque AWS gestiona las copias de seguridad, las actualizaciones y el escalado.
Pasos cortos:
1. Abra el servicio RDS → Cree la base de datos.
2. Seleccione MySQL o PostgreSQL (las reglas del nivel gratuito están disponibles en ciertas configuraciones).
3. Establecer nombre de usuario/contraseña.
4. Asegúrese de que la instancia de RDS esté en la misma VPC que la instancia EC2.
5. Configure el grupo de seguridad de RDS para que solo acepte conexiones del grupo de seguridad de EC2 (no del público).
Una vez que la base de datos esté activa, obtenga el punto final de RDS y conéctese a él desde su aplicación utilizando el controlador de base de datos.
-
11. (Opcional) Habilitar HTTPS con certificado SSL
Para producción, HTTPS es obligatorio. Método típico:
– Utilice un dominio (por ejemplo, de Route 53 u otro registrador).
– Instale SSL a través de Let's Encrypt (Certbot) en EC2.
En resumen:
"Bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
"`
Siga las instrucciones del asistente para seleccionar un dominio y habilitar la redirección HTTPS.
-
12. Seguimiento y costes
AWS proporciona CloudWatch para visualizar métricas como CPU, red y registros específicos. También es recomendable monitorear los costos para evitar pérdidas.
Consejos importantes:
– Habilitar la alarma de facturación en CloudWatch (por ejemplo, una alarma si los cargos superan los 5 dólares).
– Desactive la instancia cuando no esté en uso.
– Elimine los recursos no utilizados (balanceadores de carga, EBS, direcciones IP elásticas, instantáneas), ya que aún pueden generar costos.
-
Clausura
¡Enhorabuena! Has aprendido los conceptos básicos para crear una aplicación en AWS con EC2, ejecutar una aplicación web , configurar un proxy inverso Nginx y mantenerla siempre activa con PM2. Además, has obtenido una visión general de servicios adicionales como RDS para bases de datos, S3 para almacenamiento y certificados HTTPS para seguridad.
Si quieres subir de nivel, los siguientes pasos suelen ser:
– Despliegue automatizado con CI/CD (GitHub Actions + SSH o AWS CodeDeploy),
– Utilizando contenedores con Docker y orquestaciones como ECS o EKS,
– Utilizando una arquitectura sin servidor con Lambda + API Gateway.
Si lo desea, especifique el tipo de aplicación que está desarrollando (Node.js, Laravel, Django, React, etc.) y su propósito (demo, producción, a gran escala). Puedo personalizar el tutorial con pasos más específicos.