DEV Community

Cover image for Amazon API Gateway: La puerta de entrada a tu backend en la nube
Hazel Saenz for AWS

Posted on

Amazon API Gateway: La puerta de entrada a tu backend en la nube

Cómo API Gateway recibe requests y los conecta con tu lógica de backend.


Ya sabes qué es una API y por qué las aplicaciones se comunican haciendo peticiones.
Ya entiendes cómo una petición viaja desde tu app hasta el servidor.
Ya viste qué es REST y cómo el backend interpreta esa petición y decide qué responder.

Pero quedó una pregunta sin responder:

👉 ¿Cómo se implementa todo esto en la nube?

Porque una cosa es entender el concepto de una API REST, y otra muy distinta es desplegarla, gestionarla, escalarla, y mantenerla funcionando en producción.

Ahí es donde entra Amazon API Gateway.

No como una tecnología complicada que tienes que dominar desde cero. Sino como la puerta de entrada que maneja todo lo que pasa antes de que tu lógica de backend se ejecute.

Este artículo es para entender eso.

El problema que Amazon API Gateway resuelve

Imagina que construiste una aplicación que devuelve información de personajes de Harry Potter. Tu aplicación funciona perfecto: recibe un ID, busca en la base de datos, devuelve el personaje.

Pero ahora necesitas que tu app móvil pueda llamar a esa aplicación.

¿Cómo lo haces?

Podrías montar tu propio servidor. De hecho, eso es lo que los equipos hacían antes. Configuraban servidores con Nginx o Apache, instalaban load balancers, escribían reglas de enrutamiento, configuraban SSL manualmente, y monitoreaban logs constantemente.

Todo esto funcionaba. Pero requería experiencia en DevOps, mantener servidores 24/7, pagar por ellos aunque nadie los usara, y escalar manualmente cuando cambiaba el tráfico.

Amazon API Gateway elimina toda esa complejidad.

Es un servicio administrado que actúa como la puerta de entrada a tu backend. No es tu backend, no es donde vive tu lógica, no es donde guardas tus datos. Es el punto de entrada.

Piensa en API Gateway como el recepcionista de un edificio: recibe a todos los visitantes, verifica que tengan permiso, los dirige al piso correcto, pero no hace el trabajo de los que están en las oficinas.

No tienes que mantener servidores. No pagas cuando no hay tráfico. Escala automáticamente. Maneja HTTPS, configuración de seguridad para navegadores web, autenticación, y límites de peticiones por ti.

Es como tener un equipo de DevOps administrando tu puerta de entrada, pero sin tener que contratar a nadie.

Y lo más importante: te deja enfocarte en tu lógica de negocio, no en la infraestructura.

Cómo funciona el flujo básico

Cuando tu app hace una petición a una API desplegada con API Gateway:

  1. La petición llega a API Gateway - Tu app hace un GET https://api.tuapp.com/personajes/8
  2. API Gateway valida - Verifica que la petición esté bien formada y tenga permisos
  3. Llama a tu backend - En este caso, ejecuta tu función Lambda
  4. Devuelve la respuesta - Tu app recibe el JSON con la información del personaje

Todo ese proceso pasa en milisegundos.

API Gateway Flow

Construyamos nuestra primera API con API Gateway + Lambda

Vamos a construir una API simple que devuelve información de un personaje de Harry Potter.

Para esto usaremos dos servicios de AWS:

AWS Lambda es un servicio que ejecuta tu código sin que tengas que administrar servidores. Tú solo subes tu código y Lambda se encarga de ejecutarlo cuando lo necesites. Aquí es donde vivirá nuestra lógica de negocio.

API Gateway será la puerta de entrada que recibe las peticiones HTTP y las conecta con nuestra función Lambda.

API Gateway Demo
No te preocupes si es tu primera vez usando AWS. Vamos paso a paso.

Nota importante: Este tutorial puede realizarse completamente dentro de la capa gratuita de AWS, así que no tendrá ningún costo si tu cuenta es nueva o si no has excedido los límites gratuitos. Al final del artículo te mostraré cómo limpiar los recursos para evitar que se consuman tus créditos gratuitos (no se hará ningún cargo a tu tarjeta).

Paso 1: Crear la función Lambda

Primero necesitamos crear la función que contendrá nuestra lógica.

Crear la función:

  1. Ve a la consola de AWS y busca "Lambda" en el buscador superior
  2. Haz clic en "Create function" (Crear función)
  3. Selecciona "Author from scratch" (Crear desde cero)
  4. Configura tu función:
    • Function name: obtenerPersonaje
    • Runtime: Node.js 20.x (o la versión más reciente)
    • Architecture: x86_64
  5. Deja las demás opciones por defecto y haz clic en "Create function"

Lambda configuration - Function name and runtime

Agregar el código:

  1. Una vez creada, verás el editor de código. Reemplaza el código por defecto con este:
export const handler = async (event) => {
  // Base de datos simulada de personajes
  const personajes = {
    "1": { id: 1, nombre: "Harry Potter", casa: "Gryffindor", poder: 95 },
    "2": { id: 2, nombre: "Hermione Granger", casa: "Gryffindor", poder: 98 },
    "3": { id: 3, nombre: "Ron Weasley", casa: "Gryffindor", poder: 85 },
    "8": { id: 8, nombre: "Ginny Weasley", casa: "Gryffindor", poder: 83 }
  };

  // Obtener el ID del personaje desde la petición
  const id = event.pathParameters?.id || "1";

  console.log('ID recibido:', id);

  // Buscar el personaje
  const personaje = personajes[id];

  // Si no existe, devolver error
  if (!personaje) {
    return {
      statusCode: 404,
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify({ error: "Personaje no encontrado" })
    };
  }

  // Devolver el personaje encontrado
  return {
    statusCode: 200,
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify(personaje)
  };
};
Enter fullscreen mode Exit fullscreen mode
  1. Haz clic en "Deploy" para guardar los cambios

Tu función Lambda ya está lista. Ahora vamos a conectarla con API Gateway.

Paso 2: Crear la API en API Gateway

  1. Ve a la consola de AWS y busca "API Gateway"
  2. Haz clic en "Create API" (Crear API)
  3. Selecciona "REST API" (no la opción Private)
  4. Haz clic en "Build" (Crear)
  5. Configura tu API:
    • Choose the protocol: REST
    • Create new API: New API
    • API name: API-Personajes
    • Description: API para obtener información de personajes
    • Endpoint Type: Regional
  6. Haz clic en "Create API"

Paso 3: Crear el recurso y método

Ahora vamos a definir la estructura de nuestra API.

Crear el recurso principal:

  1. En el panel izquierdo, verás tu API. Haz clic en "Create Resource" (Crear recurso)
  2. Configura el recurso:
    • Resource Name: personajes
    • Resource Path: /personajes
  3. Marca la opción "Enable API Gateway CORS" (esto permite que tu API sea llamada desde navegadores)
  4. Haz clic en "Create Resource"

Crear el sub-recurso con parámetro:

  1. Con el recurso /personajes seleccionado, haz clic en "Create Resource" nuevamente para crear un sub-recurso
  2. Configura:
    • Resource Name: {id}
    • Resource Path: /{id}
    • Marca "Enable API Gateway CORS"
  3. Haz clic en "Create Resource"

Ahora tienes la ruta /personajes/{id} donde {id} es un parámetro dinámico.

Crear el método GET:

  1. Con el recurso {id} seleccionado, haz clic en "Create Method" (Crear método)
  2. Selecciona "GET" del dropdown y haz clic en el check ✓

Configurar la integración con Lambda:

  1. Configura la integración:
    • Integration type: Lambda Function
    • IMPORTANTE: Marca la casilla "Use Lambda Proxy integration"
    • Lambda Region: (tu región, por ejemplo us-east-1)
    • Lambda Function: obtenerPersonaje (empieza a escribir y aparecerá)
    • Deja las demás opciones por defecto
  2. Haz clic en "Save"

Nota importante sobre Lambda Proxy Integration: Esta opción le dice a API Gateway que pase toda la información de la petición HTTP (headers, path parameters, query strings, body) directamente a tu función Lambda en el objeto event. Sin esta opción, tendrías que configurar manualmente cómo se mapean los parámetros, lo cual es más complejo y propenso a errores.

  1. Aparecerá un mensaje pidiendo permiso para que API Gateway invoque tu Lambda. Haz clic en "OK"

Este paso es importante: le estás dando permiso a API Gateway para que pueda ejecutar tu función Lambda.

Sin este permiso, API Gateway no podría llamar a tu función cuando llegue una petición.

AWS maneja esto automáticamente por ti cuando haces clic en "OK".

Paso 4: Desplegar la API

Tu API está configurada, pero aún no está disponible públicamente. Necesitas desplegarla.

  1. Haz clic en "Deploy API" en el menú superior
  2. Configura el despliegue:
    • Deployment stage: [New Stage]
    • Stage name: prod
    • Stage description: Producción
  3. Haz clic en "Deploy"

¡Listo! Tu API ya está en producción.

Paso 5: Probar tu API

API Gateway te da una URL pública para tu API.

  1. En la pantalla de "Stages", verás tu stage "prod"
  2. Expande el árbol: prod → /personajes → /{id} → GET
  3. En la parte superior verás la "Invoke URL" La URL se verá algo así:
https://abc123xyz.execute-api.us-east-1.amazonaws.com/prod/personajes/8
Enter fullscreen mode Exit fullscreen mode
  1. Copia esa URL y ábrela en tu navegador (cambia el 8 por 1, 2, 3, u 8 para ver diferentes personajes)

También puedes probarla desde la terminal:

curl https://tu-url-aqui.execute-api.us-east-1.amazonaws.com/prod/personajes/8
Enter fullscreen mode Exit fullscreen mode

Deberías ver una respuesta como esta:

{
  "id": 8,
  "nombre": "Ginny Weasley",
  "casa": "Gryffindor",
  "poder": 83
}
Enter fullscreen mode Exit fullscreen mode

curl JSON response

¿Qué acabas de hacer?

Acabas de construir una API REST completa en la nube:

  • Creaste una función Lambda con tu lógica de negocio
  • Configuraste API Gateway como punto de entrada
  • Definiste una ruta con parámetros dinámicos (/personajes/{id})
  • Desplegaste tu API en producción
  • Obtuviste una URL pública que cualquiera puede llamar

Todo sin:

  • Montar servidores
  • Configurar balanceadores de carga
  • Manejar certificados SSL
  • Escribir código de infraestructura

Eso es el poder de serverless + API Gateway.

Limpieza: Eliminar los recursos

Si solo estás probando y no quieres que estos recursos sigan activos en tu cuenta de AWS, es importante eliminarlos para evitar que se consuman tus créditos gratuitos (si estás en la capa gratuita) o para evitar cargos innecesarios.

Eliminar la API en API Gateway

  1. Ve a la consola de API Gateway
  2. Selecciona tu API API-Personajes
  3. Haz clic en "Actions" → "Delete API"
  4. Confirma escribiendo el nombre de la API y haz clic en "Delete API"

Eliminar la función Lambda

  1. Ve a la consola de Lambda
  2. Selecciona tu función obtenerPersonaje
  3. Haz clic en "Actions" → "Delete"
  4. Confirma la eliminación

Con esto, todos los recursos del tutorial están eliminados y no generarán cargos en tu cuenta.

Por qué esto importa para arquitecturas serverless

Porque en serverless, tus funciones no están "corriendo" todo el tiempo. Se ejecutan cuando las llamas. Y se apagan cuando terminan. Pero tu app necesita una URL estable. Un punto de entrada que siempre esté disponible. API Gateway es ese punto de entrada.

Tu app siempre llama a la misma URL. API Gateway siempre está ahí. Y cuando llega una petición, despierta tu Lambda, la ejecuta, y devuelve la respuesta.

Sin API Gateway, serverless no funcionaría para APIs públicas.

Lo que aprendiste

  • API Gateway es la puerta de entrada, no el backend.
  • Recibe peticiones HTTP y las conecta con tu lógica real.
  • Maneja validación, transformación, seguridad, y throttling.
  • Puede integrarse con Lambda, HTTP endpoints, o servicios de AWS.
  • Incluye características de gestión de APIs sin código adicional.
  • Es esencial para arquitecturas serverless.

No es magia. Es infraestructura que alguien más mantiene por ti.

Y esa diferencia es lo que te permite construir APIs en producción sin tener que ser experto en DevOps.

Qué sigue

  • API Gateway es la puerta de entrada, no el backend.
  • Recibe peticiones HTTP y las conecta con tu lógica real.
  • Maneja validación, transformación, seguridad, y límites de peticiones.
  • Puede integrarse con Lambda, HTTP endpoints, o servicios de AWS.
  • Incluye características de gestión de APIs sin código adicional.
  • Es esencial para arquitecturas serverless. Ahora tienes las bases para construir tus propias APIs.

No porque hayas memorizado sintaxis o comandos.

Sino porque entiendes cómo funciona la conversación de principio a fin.

Y esa claridad es lo que te permite construir mejor, debuggear más rápido, y diseñar con más confianza.

Top comments (0)