Amazon API Gateway
Publica, protege y controla APIs: recibe las peticiones HTTP y las entrega a Lambda, a un servicio o a otro backend.
En palabras simples
Es la recepción de un edificio: recibe a todo el que llega, comprueba que tiene cita, anota la visita y lo dirige a la oficina correcta.
Cuándo aplicarlo
Cuando necesitas exponer una API pública o interna con autenticación, límites de uso y registro, sin escribir esa capa dentro de la aplicación.
- ▸Publicar una API sin servidores con funciones Lambda detrás
- ▸Poner autenticación y límites de tasa delante de un servicio existente
- ▸Ofrecer una API a terceros con claves y planes de uso
- ▸Exponer WebSockets para una aplicación en tiempo real
Vocabulario mínimo
- API REST y API HTTP
- Dos variantes: la REST trae más funciones —claves, cachés, validación—; la HTTP es más simple, rápida y barata.
- Recurso y método
- La ruta (`/eventos`) y el verbo (`GET`, `POST`) que definen cada punto de la API.
- Integración
- A qué se conecta el método: una función Lambda, un servicio de AWS o una URL HTTP externa.
- Autorizador
- Quién valida la petición: un grupo de usuarios de Cognito, IAM, o una función Lambda propia.
- Etapa
- Una versión desplegada de la API con su propia URL: `dev`, `prod`, cada una con su configuración.
- Plan de uso
- El límite de peticiones por segundo y por mes asociado a una clave de API.
Costo y capa gratuita
- Cómo se cobra
- Por millón de peticiones, con tarifas distintas para API HTTP —más barata— y REST. Se suma la transferencia de datos y, en la REST, la caché si se activa.
- Capa gratuita
- Un millón de peticiones al mes de API REST y HTTP durante los primeros 12 meses. Con Lambda detrás, una API pequeña puede salir prácticamente gratis.
Cuidado con los créditos
- ⚠Activar la caché de una API REST y olvidarla: se cobra por hora aunque no haya tráfico.
- ⚠Elegir REST por costumbre cuando la API HTTP basta: la diferencia de precio por millón de peticiones es notable.
- ⚠Un cliente mal programado que reintenta en bucle multiplica el número de peticiones facturadas.
Descripción
Una función Lambda no habla HTTP por sí sola, y una aplicación no debería ocuparse de autenticar, limitar el tráfico, validar entradas y registrar cada llamada. API Gateway es la capa que resuelve todo eso delante del código de negocio.
Su papel es de portero y de traductor: recibe la petición HTTP, comprueba quién llama, aplica los límites de uso, transforma la petición si hace falta y la entrega al destino. La respuesta hace el camino inverso. La aplicación se queda solo con la lógica que le importa.
Cómo funciona
- Defines los recursos y métodos de la API: rutas y verbos HTTP.
- Cada método apunta a una integración: una función Lambda, un servicio de AWS o una URL externa.
- Un autorizador valida el token o la firma antes de que la petición llegue al backend.
- Publicas la API en una etapa, que expone la URL desde la que responde.
- Un plan de uso con claves limita cuántas peticiones puede hacer cada consumidor.
Manos a la obra
- Crea una API HTTP con una ruta
GET /holaintegrada con una función Lambda que devuelva un JSON. - Publica la etapa
devy llama a la URL desde el navegador o concurl. - Añade un autorizador de Cognito y comprueba que sin token la respuesta es 401.
- Activa el registro de acceso hacia CloudWatch y revisa una petición completa en los registros.
- Fija un límite de tasa bajo y lanza peticiones en bucle para ver la respuesta 429.
Ejemplo visual
Este patrón — API Gateway, Lambda y DynamoDB — es la arquitectura sin servidores más repetida de AWS, y la que mejor se sostiene con créditos de estudiante.
Cuándo NO es la mejor opción
- Elastic Load Balancing — si detrás hay instancias o contenedores y no necesitas claves, planes de uso ni integración directa con Lambda.
- AWS AppSync — si la API es de GraphQL y los clientes necesitan pedir exactamente los campos que usan.
- URL de función de Lambda — si solo hace falta un punto HTTP para una función y no toda una capa de administración de API.
Se usa junto con
Aparece en certificaciones
- AWS Certified Cloud Practitioner
- AWS Certified Solutions Architect – Associate
- AWS Certified Developer – Associate