Skip to content
SP StackPractices
beginner Por StackPractices

AWS Básico — Servicios Core para Desarrolladores

Guía práctica de servicios core de AWS para desarrolladores: compute, storage, bases de datos, networking y fundamentos de seguridad con ejemplos hands-on.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Overview

Amazon Web Services (AWS) es la plataforma cloud más adoptada, ofreciendo más de 200 servicios. Para desarrolladores, dominar los servicios core — compute, storage, bases de datos, networking y seguridad — es esencial para construir aplicaciones escalables y rentables. Esta guía se enfoca en los servicios que usarás diariamente y cómo encajan en una arquitectura típica.

When to Use

  • Estás migrando de on-premises a cloud
  • Necesitas compute escalable sin gestionar hardware
  • Quieres bases de datos y storage gestionados
  • Estás construyendo arquitecturas serverless o microservicios

Compute — EC2 y Lambda

EC2 (Elastic Compute Cloud)

Servidores virtuales en la cloud con control total del SO.

# Lanzar una instancia vía CLI
aws ec2 run-instances \
  --image-id ami-0c55b159cbfafe1f0 \
  --count 1 \
  --instance-type t3.micro \
  --key-name my-key \
  --security-group-ids sg-123456 \
  --subnet-id subnet-123456
Familia de InstanciaCaso de Uso
T3/T4gGeneral purpose, burst (dev/test)
M6i/M6gGeneral purpose, cargas sostenidas
C6i/C6gIntensivo en compute (APIs, batch)
R6i/R6gIntensivo en memoria (caches, analytics)

Lambda

Funciones serverless que ejecutan en respuesta a eventos. Pagas por invocación y duración.

import json

def handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps({'message': 'Hello from Lambda'})
    }

Lambda se integra con S3, API Gateway, SQS, SNS, DynamoDB streams y CloudWatch Events.

Storage — S3 y EBS

S3 (Simple Storage Service)

Storage de objetos para archivos, backups, assets estáticos y data lakes.

# Crear un bucket
aws s3 mb s3://my-app-bucket

# Subir un archivo
aws s3 cp app.zip s3://my-app-bucket/builds/

# Hacer público (con precaución)
aws s3api put-object-acl --bucket my-app-bucket --key app.zip --acl public-read
Clase de StorageCaso de UsoRecuperación
StandardAcceso frecuenteInmediata
Intelligent-TieringPatrones de acceso desconocidosInmediata
GlacierArchivos a largo plazoMinutos a horas
Deep ArchiveBackups de compliance12-48 horas

EBS (Elastic Block Store)

Storage de bloque persistente para instancias EC2. Como un disco duro virtual.

# Crear y adjuntar un volumen
aws ec2 create-volume --size 100 --region us-east-1 --availability-zone us-east-1a --volume-type gp3
aws ec2 attach-volume --volume-id vol-12345 --instance-id i-12345 --device /dev/sdf

Bases de Datos — RDS y DynamoDB

RDS (Relational Database Service)

PostgreSQL, MySQL, MariaDB, SQL Server y Oracle gestionados.

# Crear una instancia PostgreSQL
aws rds create-db-instance \
  --db-instance-identifier mydb \
  --db-instance-class db.t3.micro \
  --engine postgres \
  --master-username admin \
  --master-user-password secret123 \
  --allocated-storage 20

DynamoDB

Base de datos NoSQL gestionada con latencia de milisegundos de un solo dígito.

import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Users')

table.put_item(Item={'id': 'user-1', 'name': 'Alice', 'email': 'alice@example.com'})
response = table.get_item(Key={'id': 'user-1'})

Networking — VPC

Virtual Private Cloud aisla tus recursos y controla el tráfico.

┌─────────────────────────────────────────────┐
│                    VPC                        │
│  ┌─────────────┐    ┌─────────────────────┐ │
│  │ Public Subnet│    │   Private Subnet    │ │
│  │  ┌───────┐  │    │  ┌───────┐ ┌─────┐ │ │
│  │  │  ALB  │  │    │  │  EC2  │ │ RDS │ │ │
│  │  └───┬───┘  │    │  └───┬───┘ └──┬──┘ │ │
│  │      │      │    │      │        │    │ │
│  │  Internet    │    │   NAT Gateway      │ │
│  │  Gateway     │    │   (egress only)    │ │
│  └──────────────┘    └────────────────────┘ │
└─────────────────────────────────────────────┘

Componentes clave:

  • Subnets: Públicas (con ruta IGW) vs Privadas (sin internet directo)
  • Security Groups: Firewall stateful a nivel de instancia
  • NACLs: Firewall stateless a nivel de subnet
  • NAT Gateway: Permite a instancias privadas alcanzar internet

Seguridad — IAM

Identity and Access Management controla quién puede hacer qué.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::my-app-bucket/*",
      "Condition": {
        "StringEquals": {"aws:RequestedRegion": "us-east-1"}
      }
    }
  ]
}

Mejores prácticas:

  • Usa roles, no access keys de largo plazo
  • Aplica least privilege
  • Habilita MFA para root y usuarios admin
  • Usa condiciones de IAM policy para seguridad extra

Errores Comunes

  • Dejar buckets S3 públicos — usa bucket policies y Block Public Access
  • Usar credenciales root — crea IAM users y roles inmediatamente
  • Sin VPC flow logs — no puedes debuggear lo que no puedes ver
  • Instancias EC2 sobreprovisionadas — empieza pequeño y escala; usa CloudWatch metrics
  • Ignorar alertas de costo — configura billing alarms antes de sorpresas

FAQ

¿Es AWS gratis? AWS ofrece un Free Tier: 12 meses de uso limitado en EC2, S3, RDS y Lambda. Siempre monitorea billing.

¿Debería usar ECS, EKS o Lambda?

  • Lambda: event-driven, tareas de corta duración
  • ECS: workloads containerizadas, nativo AWS
  • EKS: workloads basados en Kubernetes, portabilidad multi-cloud

¿Cómo aseguro secrets? Usa AWS Secrets Manager o Parameter Store (SSM). Nunca hardcodees credenciales en código o EC2 user data.