Patrones de diseño de Amazon API Gateway - Criterios de selección entre REST API y HTTP API

Clarificamos los criterios de selección entre HTTP API y REST API, y presentamos patrones de autenticación con Cognito y Lambda Authorizer, así como métodos prácticos de diseño de throttling.

Criterios de selección entre REST API y HTTP API

API Gateway ofrece dos tipos: REST API y HTTP API. HTTP API es el tipo más nuevo, lanzado en 2019, que cubre las funciones principales de REST API con un precio hasta un 71% más económico y menor latencia. Si el uso principal es proxy hacia funciones Lambda o endpoints HTTP, se debe elegir HTTP API. Los casos en que se debe elegir REST API son: publicación de API para terceros con claves API y planes de uso, transformación de solicitudes/respuestas (plantillas de mapeo), integración con WAF, endpoints optimizados para edge, y cuando se necesita la función de validación de solicitudes. Para nuevos proyectos, se recomienda el enfoque de usar HTTP API como predeterminado y considerar REST API solo cuando se necesiten funciones que HTTP API no tiene.

Patrones de autenticación y autorización

API Gateway soporta múltiples métodos de autenticación. El autorizador de Cognito User Pool es un método donde API Gateway valida automáticamente los tokens JWT emitidos por Cognito. No es necesario implementar la lógica de validación de tokens por cuenta propia, siendo la forma más sencilla de introducir autenticación. El Lambda Authorizer es un método que implementa lógica de autenticación personalizada en una función Lambda. Se utiliza cuando se necesita lógica de autorización flexible como formatos de token propios, integración con IdP externos o control basado en direcciones IP. Los resultados del Lambda Authorizer se pueden cachear, y configurando un TTL se reduce la ejecución duplicada de solicitudes de autenticación. La autenticación IAM es un método que autentica solicitudes con firma SigV4 de AWS, adecuado para comunicación interna entre servicios de AWS.

Throttling y planes de uso

El throttling de API Gateway se implementa con el algoritmo de token bucket. El límite predeterminado a nivel de cuenta es de 10,000 solicitudes/segundo por región, con un burst de 5,000 solicitudes. Se pueden configurar límites más granulares a nivel de stage y método, previniendo que un endpoint específico sobrecargue el backend. Los planes de uso son una función exclusiva de REST API que permite configurar límites de solicitudes diarios/mensuales y tasas de throttling por clave API. Al publicar API para socios externos, se pueden aplicar diferentes límites de tasa por socio. Se recomienda que los clientes que reciban respuestas 429 Too Many Requests implementen reintentos con backoff exponencial. Para aprender exhaustivamente la arquitectura de diseño de API, consulte libros técnicos (Amazon).

Precios de API Gateway

HTTP API cuesta aproximadamente 1.00 dólar por millón de solicitudes, un 71% más económico comparado con los 3.50 dólares de REST API. WebSocket API cuesta aproximadamente 1.00 dólar por millón de mensajes más un cargo por tiempo de conexión (aproximadamente 0.25 dólares por millón de minutos). Al habilitar la caché de REST API, se genera un cargo por hora según el tamaño de la memoria caché (aproximadamente 0.02 dólares/hora para 0.5 GB). Configurar adecuadamente el TTL de caché del Lambda Authorizer para reducir el número de invocaciones Lambda de autenticación también es efectivo para la optimización de costos. La capa gratuita incluye 1 millón de solicitudes/mes para HTTP API y REST API respectivamente durante los primeros 12 meses.

Resumen

API Gateway es un servicio que gestiona de forma centralizada la autenticación, el throttling y el monitoreo en la capa de API como punto de entrada de la arquitectura serverless. Teniendo el criterio de elegir HTTP API como opción predeterminada y seleccionar REST API cuando se necesiten funciones empresariales, se pueden optimizar los costos y la latencia.