Diseñar APIs en AWS

Desarrollo de aplicaciones en AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

¿Qué son las APIs?

 

  • Amazon API Gateway: servicio gestionado para crear APIs.
  • Diseña, implementa, gestiona y protege tus APIs.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API

  • Implementa distintos tipos de API.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API

  • Implementa distintos tipos de API.
  • Integra con servicios de backend.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API Gateway

  • Implementa distintos tipos de API.
  • Integra con servicios de backend.
  • Asegura el acceso a las APIs.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API Gateway

  • Implementa distintos tipos de API.
  • Integra con servicios de backend.
  • Asegura el acceso a las APIs.
  • Limita peticiones para proteger los backends.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API Gateway

  • Implementa distintos tipos de API.
  • Integra con servicios de backend.
  • Asegura el acceso a las APIs.
  • Limita peticiones para proteger los backends.
  • Transforma cargas de solicitud y respuesta.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API Gateway

  • Implementa distintos tipos de API.
  • Integra con servicios de backend.
  • Asegura el acceso a las APIs.
  • Limita peticiones para proteger los backends.
  • Transforma cargas de solicitud y respuesta.
  • Publica APIs para consumidores.
Desarrollo de aplicaciones en AWS

Capacidades de Amazon API Gateway

 

Capacidades de API Gateway

  • Implementa distintos tipos de API.
  • Integra con servicios de backend.
  • Asegura el acceso a las APIs.
  • Limita peticiones para proteger los backends.
  • Transforma cargas de solicitud y respuesta.
  • Publica APIs para consumidores.
  • Gestiona el ciclo de vida: versionado, despliegue, alias.
Desarrollo de aplicaciones en AWS

Tipos de API

  • API Gateway admite tres tipos de API:
    • REST APIs
    • HTTP APIs
    • WebSocket APIs

 

Tipos de API

Desarrollo de aplicaciones en AWS

Endpoints de API Gateway

  • Los endpoints controlan cómo llegan los clientes a tu API.
  • Edge-optimized: CloudFront gestionado por AWS para baja latencia global.
  • Regional: desplegado en una Región de AWS específica.
  • Private: solo accesible vía AWS PrivateLink.
  • Los endpoints privados no pasan por internet pública.

 

Endpoints

Desarrollo de aplicaciones en AWS

REST APIs

  • La oferta de API Gateway con más funciones.
  • Basada en un modelo síncrono de solicitud/respuesta.

 

REST APIs

Desarrollo de aplicaciones en AWS

Casos de uso de REST API

 

Casos de uso de API REST

  • APIs corporativas con gestión completa del ciclo de vida.
  • APIs que requieren controles de seguridad avanzados.
  • Ecosistemas de terceros con claves de API y planes de uso.
  • Integraciones directas con servicios de AWS sin Lambda.
Desarrollo de aplicaciones en AWS

Compatibilidad de API Gateway para REST API

 

Compatibilidad de REST API

  • Validación de solicitudes.
  • Claves de API.
  • Planes de uso y limitación.
  • Caché de respuestas con TTL configurable.
  • Transformación de solicitud/respuesta con plantillas VTL.
  • Autenticación IAM (Signature V4).
  • Autorizadores Lambda, grupos de usuarios de Cognito.
Desarrollo de aplicaciones en AWS

Compatibilidad de API Gateway para REST API

 

 

Compatibilidad de REST API

  • Tres tipos de endpoint admitidos:
    • Edge-optimized
    • Regional
    • Private
  • Protección frente a exploits web con AWS WAF.
  • Despliegues canary.
  • Observabilidad con AWS X-Ray y registros de CloudWatch.
Desarrollo de aplicaciones en AWS

Compromisos de REST APIs

  • Más caro que HTTP APIs.
  • Latencia ligeramente mayor.

 

Compromisos de REST

Desarrollo de aplicaciones en AWS

HTTP APIs

  • Optimizado para rendimiento y coste sobre amplitud de funciones:
    • Rendimiento
    • Coste

 

HTTP APIs

Desarrollo de aplicaciones en AWS

Casos de uso de HTTP API

  • Cargas sin servidor y APIs con Lambda.
  • Microservicios y APIs proxy ligeras.
  • Aplicaciones sensibles a la latencia.
  • APIs con autenticación OAuth 2.0 / OIDC.

 

Casos de uso de HTTP APIs

Desarrollo de aplicaciones en AWS

Compatibilidad de API Gateway para HTTP API

 

Funciones de HTTP API

  • Integraciones proxy y autorizadores de Lambda.
  • Autorización JWT/OIDC nativa (Cognito, Auth0, Okta).
  • Configuración CORS integrada a nivel de API.
  • Integraciones privadas de VPC mediante VPC Link.
  • Mapeo básico de parámetros para headers, query strings y rutas.
Desarrollo de aplicaciones en AWS

Compromisos de HTTP API

 

Limitaciones de HTTP API

  • HTTP APIs NO admiten:

    • Claves de API
    • Planes de uso
    • Validación de solicitudes
    • Caché de respuestas
    • Trazas con AWS X-Ray
    • Transformación de cargas con VTL

    • Solo admiten:

      • Endpoints edge o privados (solo regional)
Desarrollo de aplicaciones en AWS

WebSocket APIs

 

WebSocket APIs

  • Comunicación bidireccional entre clientes y servidores.
  • La conexión permanece abierta, a diferencia de REST y HTTP APIs.
  • Los servidores pueden enviar datos a clientes conectados.
Desarrollo de aplicaciones en AWS

Casos de uso de WebSocket API

  • Aplicaciones de chat.
  • Notificaciones en tiempo real.
  • Paneles en tiempo real.

 

casos de uso

Desarrollo de aplicaciones en AWS

Compatibilidad de API Gateway para WebSocket API

  • Transformaciones de datos de las cargas.
  • Validación de solicitudes.
  • Rutas integradas especiales:
    • $connect: el cliente establece conexión
    • $disconnect: el cliente se desconecta
    • $default: no se encontró ruta coincidente

 

Funciones de WebSocket API

Desarrollo de aplicaciones en AWS

Caché de API

  • Cachear respuestas reduce la carga del backend.
  • Mejora el rendimiento de la API.
  • Casos típicos:
    • Datos solicitados con frecuencia
    • APIs con muchas lecturas
    • Reducir invocaciones de Lambda

 

Caché de API

Desarrollo de aplicaciones en AWS

Caché de API

 

Respuesta en caché de API

  • Las respuestas en caché caducan tras un TTL configurable.
  • Gestiona datos obsoletos:
    • Haciendo expirar la caché
    • Vaciando la caché
Desarrollo de aplicaciones en AWS

Buenas prácticas de diseño de API: usa nombres claros para recursos

 

Diseño de API - sustantivos

  • Las rutas deben representar recursos, no acciones.
  • Usa sustantivos, no verbos.
  • Bien:
    • GET /orders/123
  • Evita:
    • GET /getOrder/123
Desarrollo de aplicaciones en AWS

Buenas prácticas de diseño de API: versiona las APIs

 

Versionado de APIs

  • Versiona las APIs para evolucionarlas con seguridad.
  • Evita romper clientes existentes.
  • Enfoques comunes:
    • Versión en la URI: GET /v1/orders
    • Parámetro de consulta: GET /orders?version=1
    • Cabecera HTTP: Accept-Version: v1
Desarrollo de aplicaciones en AWS

Portales para desarrolladores de API

  • Publica y comparte REST APIs mediante un portal web.
  • Ofrece documentación a consumidores de API.
  • Funciones clave:
    • Documentación de API (archivos Swagger)
    • Incorporación de consumidores
    • Descarga de SDKs
    • Registro de claves de API y suscripciones

 

portal de api gateway

Desarrollo de aplicaciones en AWS

Especificaciones OpenAPI

  • OpenAPI (Swagger): estándar para describir REST APIs.
  • API Gateway puede importar y exportar especificaciones OpenAPI.

 

Compatibilidad con Swagger en API Gateway

Desarrollo de aplicaciones en AWS

¡Vamos a practicar!

Desarrollo de aplicaciones en AWS

Preparing Video For Download...