Guía Completa para Crear tu Primera Máquina Virtual en AWS EC2 Gratis
Aprende paso a paso cómo aprovechar la capa gratuita de Amazon Web Services para tus proyectos universitarios
📅 Publicado el 17 de August, 2025 Actualizado: hoy
Como estudiante de ingeniería, dominar la computación en la nube es esencial en el mundo tecnológico actual. Amazon Web Services (AWS) ofrece una oportunidad única para explorar estos servicios sin costo inicial a través de su capa gratuita. En este artículo, te guiaremos paso a paso para crear tu primera máquina virtual utilizando EC2 (Elastic Compute Cloud), el servicio de computación más popular de AWS. Esta habilidad no solo enriquecerá tu perfil profesional, sino que también te proporcionará una infraestructura robusta para desarrollar y probar tus proyectos académicos.
Requisitos previos
- Cuenta de AWS (Free Tier habilitada)
- Cliente SSH (macOS/Linux/WSL) o PuTTY (Windows)
- Navegador actualizado y 2FA (MFA) activo
Resumen Free Tier
- 750 horas/mes t2.micro o t3.micro (según región)
- 30 GB de EBS gp2/gp3 + 2M I/O
- ≈ 15 GB datos de salida a Internet
Objetivos
- Lanzar tu primera EC2 con seguridad
- Conectar por SSH/SSM
- Aplicar mejores prácticas y optimizar costos
horas mensuales gratuitas
de instancias t2.micro/t3.micro en el primer año de AWS
EBS gp2/gp3
incluye 2M I/O y 1 GB de snapshots
de empresas usan la nube
según estudios recientes del sector
meses de acceso gratuito
a servicios seleccionados de AWS para nuevas cuentas
🎯 ¿Qué es AWS EC2 y por qué es fundamental para ingenieros?
Amazon Elastic Compute Cloud (EC2) es un servicio web que proporciona capacidad informática redimensionable en la nube. Esencialmente, te permite crear y gestionar servidores virtuales (instancias) que pueden ejecutar aplicaciones, alojar sitios web, procesar datos o cualquier tarea que requieras. Para estudiantes de ingeniería, EC2 representa una oportunidad invaluable de acceder a recursos computacionales de nivel empresarial sin inversión inicial. La capa gratuita de AWS incluye 750 horas mensuales de instancias t2.micro durante el primer año, lo que equivale a mantener una máquina virtual funcionando las 24 horas durante todo el mes. Además, obtienes 30 GB de almacenamiento EBS, 2 millones de peticiones de entrada/salida y 15 GB de ancho de banda mensual. Este servicio es utilizado por empresas como Netflix, Airbnb y Spotify para escalar sus aplicaciones globalmente.
Bajo el capó
- Hipervisor AWS Nitro (seguridad y rendimiento mejorado)
- Familias de instancias: T (burstable), M (general), C (cómputo), R (memoria)
- Créditos de CPU en T-series: evita activar “Unlimited” en Free Tier para no incurrir en costos extra
📊 Preparación: Crear tu cuenta AWS y configurar el entorno
El primer paso es registrarse en AWS, un proceso que requiere verificación de identidad y tarjeta de crédito (aunque no se realizarán cargos mientras permanezcas dentro de los límites gratuitos). Accede a aws.amazon.com y haz clic en “Crear una cuenta de AWS”. Durante el registro, selecciona el plan de soporte básico (gratuito). Una vez completado, accederás a la Consola de Administración de AWS, tu centro de comando para todos los servicios.
Controles de costos desde el día 1
- Billing > Budgets: crea un presupuesto mensual con alertas a $1 USD.
- Billing > Preferences: activa “Receive Billing Alerts”.
- Cost Management > Anomaly Detection: habilita detección de anomalías.
- Configura alertas de CloudWatch por uso de EC2/EBS.
Seguridad de cuenta
- Activa MFA (autenticación de dos factores) en el usuario raíz.
- Crea un usuario IAM administrativo y usa ese usuario a diario.
- Habilita una política de contraseñas y rotación.
ssh -V
.
🔬 Proceso paso a paso para lanzar tu instancia EC2
Desde la consola de AWS, busca “EC2” y selecciona el servicio. Asegúrate de estar en una región con Free Tier (ej. us-east-1 o us-west-2).
- Launch Instance: EC2 > Instances > “Launch Instances”.
- AMI: elige “Amazon Linux 2023” o “Amazon Linux 2” marcadas como “Free tier eligible”.
- Tipo de instancia: selecciona
t2.micro
ot3.micro
(1 vCPU, 1 GiB RAM). - Red: usa la VPC y subred por defecto, con “Auto-assign Public IP: Enable”.
- Almacenamiento: EBS 8–10 GB gp3. Mantente dentro de los 30 GB Free Tier totales.
- Tags: agrega
Name=Mi-Primera-EC2
y etiquetas comoOwner=tu-email
,Env=dev
. - Security Group: crea uno con SSH (22) solo desde tu IP (
My IP
). Para web, agrega HTTP (80) y HTTPS (443) luego. - Key pair: crea o selecciona un par de claves (.pem). Descárgalo y guárdalo de forma segura.
- Launch: lanza y espera estado “running” + checks “2/2 passed”.
Consola vs CLI
Equivalente con AWS CLI (ejemplo genérico):
# Configura credenciales primero:
aws configure
# Lanza instancia Free Tier (ajusta SubnetId y SecurityGroupIds):
aws ec2 run-instances \
--image-id ami-xxxxxxxxxxxxxxxxx \
--instance-type t3.micro \
--key-name mi-clave-ec2 \
--subnet-id subnet-xxxxxxxx \
--security-group-ids sg-xxxxxxxx \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Mi-Primera-EC2}]' \
--block-device-mappings 'DeviceName=/dev/xvda,Ebs={VolumeSize=10,VolumeType=gp3}'
Obtén la PublicIpAddress
con: aws ec2 describe-instances
Infra como código (Terraform)
provider "aws" {
region = "us-east-1"
}
resource "aws_key_pair" "kp" {
key_name = "mi-clave-ec2"
public_key = file("~/.ssh/id_rsa.pub")
}
resource "aws_security_group" "ssh" {
name = "sg-ssh-myip"
vpc_id = data.aws_vpc.default.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["TU.IP.PUBLICA/32"]
}
egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] }
}
data "aws_vpc" "default" { default = true }
data "aws_subnets" "default" { filter { name = "vpc-id" values = [data.aws_vpc.default.id] } }
resource "aws_instance" "free_tier" {
ami = "ami-xxxxxxxx" # AL2023/AL2 Free Tier
instance_type = "t3.micro"
subnet_id = data.aws_subnets.default.ids[0]
vpc_security_group_ids = [aws_security_group.ssh.id]
tags = { Name = "Mi-Primera-EC2", Env = "dev" }
root_block_device { volume_size = 10 volume_type = "gp3" }
}
Ejecuta: terraform init && terraform apply
⚡ Configuración de seguridad y acceso remoto
La seguridad es prioritaria en la nube. Durante el lanzamiento, AWS te pedirá crear o seleccionar un par de claves. Selecciona “Create a new key pair”, nómbrala descriptivamente (ej: “mi-clave-ec2”) y descarga el archivo .pem. Este archivo es tu única forma de acceder a la instancia, así que guárdalo en un lugar seguro y nunca lo compartas. En Unix/Linux/Mac, cambia permisos con chmod 400 mi-clave-ec2.pem
.
Los grupos de seguridad actúan como firewalls virtuales; para acceso inicial, permite solo SSH desde tu IP. Una vez lanzada la instancia, aparecerá en tu panel con estado “running”. Para conectarte, selecciona la instancia y haz clic en “Connect”. AWS ofrece SSH, EC2 Instance Connect o Session Manager.
Conexión SSH típica
# Amazon Linux/AL2023
ssh -i mi-clave-ec2.pem ec2-user@<ip-publica>
# Ubuntu
ssh -i mi-clave-ec2.pem ubuntu@<ip-publica>
# Debian
ssh -i mi-clave-ec2.pem admin@<ip-publica>
En Windows con PuTTY: convierte .pem
a .ppk
con PuTTYgen y autentícate en “Auth”.
Recomendado: AWS Systems Manager (SSM)
- Adjunta un rol IAM con
AmazonSSMManagedInstanceCore
. - AL2/AL2023 ya trae el SSM Agent; verifica con
sudo systemctl status amazon-ssm-agent
. - Conéctate sin exponer SSH: EC2 > “Connect” > “Session Manager”.
# Con AWS CLI v2:
aws ssm start-session --target <instance-id>
🚀 Configuración inicial y mejores prácticas para estudiantes
Una vez conectado a tu instancia, el primer paso es actualizar el sistema con sudo yum update -y
(Amazon Linux) o sudo dnf update -y
(AL2023) / sudo apt update && sudo apt upgrade -y
(Ubuntu). Instala herramientas esenciales como Git con sudo yum install -y git
.
Para proyectos web, instala Node.js, Python, o el stack LAMP/LEMP. Configura tu editor preferido (nano/vim) o VS Code Remote SSH. Para bases de datos, puedes instalar MySQL/PostgreSQL, o preferir servicios administrados como RDS dentro de su capa gratuita.
Bootstrap con user-data (cloud-init)
Instala y sirve una página de prueba con Nginx al lanzar la instancia:
# En "Advanced details" > "User data"
#!/bin/bash
dnf -y update
dnf -y install nginx
systemctl enable nginx
echo "Hola desde EC2 🚀" > /usr/share/nginx/html/index.html
systemctl start nginx
Abre el puerto 80 en el Security Group para ver tu sitio.
Backups y observabilidad
- Snapshots EBS: EC2 > Volumes > Create snapshot.
- Automatiza con Data Lifecycle Manager (DLM).
- CloudWatch Agent para métricas y logs del sistema.
# Crear AMI (imagen) de una instancia
aws ec2 create-image --instance-id i-xxxx --name "backup-$(date +%F)"
sudo fallocate -l 512M /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
sudo swapon -a
🧰 Solución de problemas comunes (Troubleshooting)
- Permisos:
chmod 400 mi-clave-ec2.pem
- Usuario correcto según AMI:
ec2-user
(AL2/AL2023),ubuntu
(Ubuntu). - Confirma que la instancia usa el key pair esperado.
- Si perdiste la clave: crea una AMI, lanza nueva instancia con un key pair nuevo, o usa SSM si estaba habilitado.
- Security Group: puerto 22 abierto solo para tu IP.
- La instancia tiene IP pública y “Source/Dest Check” por defecto habilitado.
- La subred es pública y tiene route a Internet Gateway.
- NACLs permiten tráfico entrante/saliente (predeterminadas suelen estar OK).
- Espera 2–3 minutos tras el arranque inicial.
- Revisa System Log de la instancia (EC2 > “Actions” > “Monitor and troubleshoot”).
- Si es persistente, crea una imagen (si accesible) y lanza otra instancia.
- Abre puertos 80/443 en el Security Group.
- Servicio activo:
sudo systemctl status nginx/httpd
- Firewall interno (firewalld/ufw) permite puertos.
- Para HTTPS, obtén TLS con Let’s Encrypt (certbot).
💰 Optimización de costos y rendimiento en Free Tier
Consejos clave
- Evita “T Unlimited” en t2/t3 para no pagar créditos extra.
- Prefiere discos gp3: más baratos y configurables que gp2.
- Detén instancias cuando no las uses; programa apagados con EventBridge.
- Elimina volúmenes y Elastic IPs no usados.
- Usa etiquetas (Tags) para seguimiento de costos por proyecto.
# Detener/arrancar desde CLI:
aws ec2 stop-instances --instance-ids i-xxxx
aws ec2 start-instances --instance-ids i-xxxx
Monitoreo y alertas
- CloudWatch: crea alarmas por CPU, red y disco.
- Budgets: alertas por costos previstos y reales.
- Cost Explorer: identifica picos diarios.
📦 Contenedores en EC2 y comparativas (Docker vs Podman, ECS/EKS)
Instalar Docker en Amazon Linux 2023
sudo dnf update -y
sudo dnf install -y docker
sudo systemctl enable --now docker
sudo usermod -aG docker ec2-user
# Sal y entra de la sesión SSH para aplicar grupos
docker run hello-world
sudo curl -L https://github.com/docker/compose/releases/... -o /usr/local/bin/docker-compose
Podman (rootless) y comparativa
sudo dnf -y install podman
podman run --rm -it docker.io/library/alpine:latest sh
- Docker: ecosistema amplio, daemon central.
- Podman: rootless, compatible con CLI de Docker.
- ECS/Fargate: sin servidores, paga por uso de tareas.
- EKS: Kubernetes administrado para cargas de trabajo complejas.
🧪 Compatibilidad, requisitos y arquitecturas
Sistemas operativos
- Amazon Linux 2023 / 2 (x86_64)
- Ubuntu 22.04/24.04 LTS
- Debian, RHEL, SUSE
- Windows Server (no Free Tier para horas EC2 estándar)
Arquitecturas CPU
- x86_64: compatible universal
- arm64 (Graviton): eficiente y económico para cargas compatibles
- Verifica imágenes multi-arch para contenedores
Red y DNS
- IP elástica para dirección fija (costo si no está asociada)
- Route 53 para dominios y DNS
- ALB/ELB para balanceo de carga
🧭 Casos de uso y variaciones de despliegue
LEMP (Linux, Nginx, MySQL, PHP)
- Nginx:
sudo dnf install -y nginx
- PHP-FPM:
sudo dnf install -y php php-fpm
- MySQL: usa RDS Free Tier para DB administrada
- CloudWatch Logs para access/error logs de Nginx
certbot
+ --nginx
).Data Science/IA ligera
- Python + venv + Jupyter: considera swap de 512 MB
- Almacenamiento en S3 y acceso con rol IAM
- Para cargas serias, evalúa instancias con GPU (no Free Tier)
IAM Role de ejemplo (acceso S3 read-only)
{
"Version": "2012-10-17",
"Statement": [
{ "Effect": "Allow", "Action": ["s3:GetObject","s3:ListBucket"], "Resource": ["arn:aws:s3:::mi-bucket","arn:aws:s3:::mi-bucket/*"] }
]
}
Adjunta el rol a la instancia para evitar credenciales en disco.
🎯 Conclusión
Crear tu primera máquina virtual en AWS EC2 es más que un ejercicio técnico; es tu entrada al mundo de la computación en la nube que define la infraestructura tecnológica moderna. Has aprendido a navegar la consola de AWS, configurar instancias de manera segura, y establecer las bases para proyectos más complejos. Esta experiencia práctica te proporciona ventajas competitivas significativas en el mercado laboral, donde el 94% de las empresas utilizan servicios en la nube según estudios recientes. Recuerda que la capa gratuita es tu laboratorio de aprendizaje durante 12 meses; úsala para experimentar con diferentes configuraciones, servicios complementarios como RDS, S3, o Lambda. La curva de aprendizaje puede parecer empinada inicialmente, pero cada hora invertida en dominar AWS multiplicará tus oportunidades profesionales. Continúa explorando, creando proyectos reales, y documentando tu progreso. El futuro de la ingeniería está en la nube, y acabas de dar tu primer paso firme hacia ese horizonte.
Siguientes pasos recomendados
- Automatiza con Terraform/CloudFormation.
- Migra a SSM y cierra SSH público.
- Integra CI/CD (CodePipeline, GitHub Actions) para despliegues.
- Aprende sobre redes: VPC privadas + NAT + ALB.
Checklist de seguridad
- MFA activado para raíz e IAM.
- Roles IAM en lugar de claves de acceso.
- Backups (AMI/Snapshots) programados.
- GuardDuty/Inspector/Security Hub habilitados.
Guía Completa para Crear tu Primera Máquina Virtual en AWS EC2 Gratis