← Volver al catálogo

Amazon API Gateway

En una frase: Expone tus backends como endpoints REST, HTTP o WebSocket con autorización y cuotas
Certificaciones: SAA-C03 SAP-C02 CLF-C02 DVA-C02

Qué es

Amazon API Gateway es un servicio gestionado para exponer APIs. Recibe las peticiones de los clientes y se encarga de la autenticación, CORS (Cross-Origin Resource Sharing: permite que una web llame a otro dominio), limitación de peticiones y enrutado hacia el backend (Lambda, un endpoint HTTP (HyperText Transfer Protocol: protocolo de la web) u otro servicio de AWS). No hay servidores que mantener y escala solo.

Conceptos clave

  • Tipos de API (Application Programming Interface: interfaz para que los programas se comuniquen):
    • REST API: la más completa, con caché, claves de API y planes de uso, transformación de peticiones, validación e integración con AWS WAF (Web Application Firewall).
    • HTTP API: más sencilla, más barata y con menos latencia. Tiene autorizador JWT (JSON Web Token: token firmado con datos del usuario) nativo y cubre la mayoría de proxies hacia Lambda o HTTP.
    • WebSocket API: conexiones bidireccionales persistentes (chats, notificaciones en tiempo real).
  • Tipos de endpoint (REST): edge-optimized (a través de la red de CloudFront), regional y privado (solo accesible desde una VPC (Virtual Private Cloud) mediante un endpoint de interfaz).
  • Etapas (stages): versiones desplegadas (dev, prod) con sus propias variables, limitación y logs. Permiten despliegues canary en REST.
  • Autorizadores: IAM (Identity and Access Management) (firma SigV4), Cognito user pool o JWT, y autorizadores Lambda (lógica propia a partir de un token o de los parámetros de la petición).
  • Limitación (throttling): cuota por cuenta y región (10.000 peticiones por segundo con ráfagas, en la mayoría de regiones), y límites por etapa, ruta o cliente mediante planes de uso.
  • Límites importantes: carga útil máxima de 10 MB. El tiempo máximo de integración es de 29 segundos en REST (ampliable a petición en APIs regionales y privadas) y de 30 segundos en HTTP API.
  • VPC Link: conecta la API con recursos privados de una VPC (NLB (Network Load Balancer: balanceador TCP/UDP), ALB (Application Load Balancer: balanceador HTTP/HTTPS) o Cloud Map).

Casos de uso típicos

  • Backend serverless: API Gateway más Lambda más DynamoDB.
  • Fachada única delante de microservicios en contenedores o instancias privadas.
  • Publicar una API para terceros con claves, cuotas y planes de uso (REST).
  • Integración directa con servicios de AWS sin Lambda intermedia (por ejemplo, poner mensajes en SQS (Simple Queue Service) o escribir en DynamoDB).
  • Aplicaciones en tiempo real con WebSocket.

Cuándo NO usarlo

  • Subir o descargar ficheros grandes: superan los 10 MB. Mejor URLs prefirmadas de S3 (Simple Storage Service).
  • Procesos que tardan más que el tiempo máximo de integración: mejor un patrón asíncrono (la API encola el trabajo en SQS o Step Functions y el cliente consulta el estado).
  • Si solo necesitas un endpoint HTTPS (HTTP Secure: HTTP cifrado con TLS) para una única función Lambda, sin autorizador ni límites, una URL (Uniform Resource Locator: dirección web) de función de Lambda puede bastar.
  • Para balancear tráfico hacia instancias o contenedores sin funciones de API: un Application Load Balancer suele ser más adecuado.

Comparativa con servicios parecidos

NecesidadREST APIHTTP APIALB
Caché de respuestasSíNoNo
Claves de API y planes de usoSíNoNo
AWS WAFSíNo (se puede poner CloudFront delante)Sí
Autorizador JWT nativoVía CognitoSíAutenticación OIDC/Cognito
CosteMayorMenorPor hora y por uso (LCU)

Modelo de precios

Pago por uso: por millón de peticiones (HTTP API es sensiblemente más barata que REST) más la transferencia de datos de salida. La caché de REST se paga por hora según su tamaño. En WebSocket se paga por mensajes y por minutos de conexión.

Seguridad y alta disponibilidad

  • Autorización con IAM, Cognito/JWT o Lambda; políticas de recurso para limitar por cuenta, IP (Internet Protocol: dirección de red) o VPC.
  • AWS WAF (REST) y protección de AWS Shield Standard.
  • Certificados de ACM (AWS Certificate Manager) para dominios propios, TLS (Transport Layer Security: cifrado de las conexiones) obligatorio.
  • Servicio regional multi-AZ; para multi-región se combinan APIs regionales con Route 53.

Así lo uso en Kopi

Kopi usa una HTTP API con dominio propio y certificado de ACM como única entrada al backend. El autorizador JWT valida el token de Cognito antes de invocar ninguna Lambda, y el CORS solo admite los orígenes de la app. Elegí HTTP API porque es más barata y tenía todo lo necesario. La subida de ficheros no pasa por la API: por el límite de 10 MB, el navegador sube directamente a S3 con una URL prefirmada. El autorizador solo comprueba que el token es válido; que cada usuario vea solo sus datos lo comprueba cada Lambda.

Trampas de examen

  • "Cachear respuestas", "claves de API", "planes de uso" o "WAF" en la API: REST API.
  • "Menor coste y latencia" con JWT u OIDC (OpenID Connect: estándar de identidad sobre OAuth 2.0): HTTP API.
  • "Tiempo real bidireccional": WebSocket API.
  • "Accesible solo desde la VPC": API privada con endpoint de interfaz.
  • Error 429: limitación de peticiones. Error 504: se superó el tiempo de integración.
  • "Ficheros grandes": URLs prefirmadas de S3, no API Gateway.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes