Amazon API Gateway al descubierto: eligiendo la estrategia de endpoint correcta para tu API
Esta guía explora las opciones de exposición de endpoints de Amazon API Gateway, detallando su implementación, ventajas, casos de uso, impactos arquitectónicos, limitaciones, solución de problemas, costos y más.
Amazon API Gateway
Guía completa de Amazon API Gateway cubriendo APIs REST, APIs WebSocket, autenticación, throttling y mejores prácticas de monitoreo.
2 articles
1. Introducción
Ya sabes qué es una API (Application Programming Interface), qué es Amazon API Gateway, cuándo elegir entre APIs REST y HTTP, y tienes experiencia y no necesitas tutoriales o talleres.
No necesito recordarte las ventajas de usar Amazon API Gateway (escalabilidad, seguridad, rendimiento, gestión del ciclo de vida, etc.) o los casos de uso más comunes (arquitecturas serverless, microservicios, recuperación de datos, etc.).
Entonces, podemos entrar directamente en los detalles de las opciones para exponer API Gateway.
Compararemos las siguientes opciones:
- URL de Endpoint Estándar:
https://{api-id}.execute-api.{region}.amazonaws.com/{stage}/count - Nombres de Dominio Personalizados:
https://{subdomain}.{custom-domain}.com/count - Integración con Amazon CloudFront:
- Usando DNS autogenerado de CloudFront:
https://{random-name}.cloudfront.net - Usando nuestro dominio personalizado:
https://{custom-domain}.com/{optional-level}/count
- Usando DNS autogenerado de CloudFront:
- Endpoints Privados (Integración VPC):
- Invocando tu API privada usando nombres DNS privados: igual que URL de Endpoint Estándar
- Accediendo a tu API privada usando un alias de Route53:
https://{api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}/count - Invocando tu API privada usando nombres de host DNS públicos específicos del endpoint:
https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage} - Aquí tienes más información.
Para la opción de
Integración con CloudFront, asumiré que también estamos usando nuestro propio dominio.
2. Descripción Detallada de las Opciones de Exposición de Endpoints de Amazon API Gateway
- URL de Endpoint Estándar
- Descripción: Esta es la
configuración predeterminada. Hay 2 tipos de endpoints de API relacionados con esta opción: regional y optimizado para edge.- Cuando despliegas una API optimizada para edge, API Gateway configura una
distribución de Amazon CloudFronty un registro DNS para mapear el nombre de dominio de la API al nombre de dominio de la distribución de CloudFront. Sin embargo, no puedes configurarlo.
- Cuando despliegas una API optimizada para edge, API Gateway configura una
- Impacto Arquitectónico: Los endpoints estándar son rápidos de implementar, facilitando el desarrollo ágil. Sin embargo, ofrecen control limitado sobre el enrutamiento de red y las optimizaciones de rendimiento.
- Diagrama:
- Descripción: Esta es la
- Nombres de Dominio Personalizados
- Descripción: Los nombres de dominio personalizados son
URLs más simples e intuitivasque puedes proporcionar a los usuarios de tu API. Un dominio fácil de recordar y relevante para el propósito de tu API puede mejorar significativamente la experiencia del usuario y la capacidad de descubrimiento de la API. Además, simplifica el proceso de actualización y mantenimiento de APIs, ya que el endpoint permanece constante incluso si el backend cambia. - Impacto Arquitectónico: Requiere configuración DNS adicional y certificados SSL/TLS, introduciendo complejidad en la gestión de dominios pero mejorando significativamente la capacidad de descubrimiento y confiabilidad de la API. Permite un punto de entrada consistente para las APIs a pesar de los cambios subyacentes.
- Diagrama:
- Descripción: Los nombres de dominio personalizados son
- Integración con CloudFront
- Descripción: Al integrar API Gateway con CloudFront,
las APIs se benefician de las capacidades de CDN, incluyendo mejor distribución global y almacenamiento en caché. - Impacto Arquitectónico: Este enfoque mejora el rendimiento y disponibilidad de la API aprovechando la red distribuida de ubicaciones edge de CloudFront. Implica una configuración más compleja pero ofrece características de seguridad robustas y manejo eficiente de volúmenes de tráfico altos.
- Diagrama:
- Descripción: Al integrar API Gateway con CloudFront,
- Endpoints Privados (Integración VPC)
- Descripción: Los endpoints privados
restringen el acceso a la API dentro de una Amazon Virtual Private Cloud(VPC), mejorando la seguridad para APIs internas. - Impacto Arquitectónico: Requiere un endpoint VPC y es ideal para arquitectura de microservicios dentro de una VPC, asegurando que el tráfico de la API no atraviese internet público. Esta configuración soporta protocolos de seguridad mejorados y aislamiento de red pero limita la accesibilidad a usuarios o servicios internos.
- Diagrama:
- Descripción: Los endpoints privados
3. Ventajas y Desventajas
- URL de Endpoint Estándar
- Ventajas:
Facilidad de Uso: Rápido y directo de configurar sin configuraciones adicionales necesarias.Rentable: Generalmente costos más bajos debido al modelo de precios básico de API Gateway.
- Limitaciones:
Carece de marca y personalización, no ideal para APIs de grado de producción.Volatilidad del endpoint; recrear un recurso resulta en una nueva URL, complicando la integración continua y necesitando actualizaciones en aplicaciones cliente o servicios para reflejar el cambio.
- Ventajas:
- Nombres de Dominio Personalizados
- Ventajas:
Marca: Mejora la apariencia profesional y memorabilidad de tu API.Consistencia: Mantiene el endpoint constante, lo que simplifica las actualizaciones y gestión de la API.Experiencia de Usuario: Un dominio memorable y relevante mejora la interacción del usuario con la API.
- Limitaciones:
Requiere registro de dominio y gestión de certificado SSL. Proceso de configuración ligeramente más complejo.
- Ventajas:
- Integración con CloudFront
- Ventajas:
Mismas ventajas que Nombres de Dominio Personalizados(porque estamos usando nuestro dominio personalizado con CloudFront):- Marca: Mejora la apariencia profesional y memorabilidad de tu API.
- Consistencia: Mantiene el endpoint constante, lo que simplifica las actualizaciones y gestión de la API.
- Experiencia de Usuario: Un dominio memorable y relevante mejora la interacción del usuario con la API.
Rendimiento Global: Reduce significativamente la latencia, mejorando la experiencia del usuario global.Control Avanzado: Ofrece control granular sobre almacenamiento en caché, políticas de seguridad y configuraciones de distribución.Mejora de Seguridad: Mejora la postura de seguridad con los beneficios de CDN.Mitigación de CORS: Simplifica el manejo de problemas de CORS gestionándolos a través de CloudFront, evitando así problemas comunes asociados con la aplicación de políticas CORS a nivel de API Gateway.
- Limitaciones:
Requiere registro de dominio y gestión de certificado SSL. Proceso de configuración ligeramente más complejo.Configuración y gestión más complejas. Requiere comprensión de las configuraciones de CloudFront.Costos más altosasociados con el uso de CloudFront
- Ventajas:
- Endpoints Privados (Integración VPC)
- Ventajas:
Aislamiento de red: Restringe el acceso a la API dentro de una VPC especificada, aumentando la privacidad de datos y cumplimiento.Seguridad mejoradamanteniendo el tráfico dentro de la red AWS.
- Limitaciones:
Privado. No accesible desde fuera de la VPC.- Requiere
configuración adicionalpara VPC y configuración de endpoint
- Ventajas:
4. Caso de uso y escenario del mundo real
- URL de Endpoint Estándar
- Caso de Uso: Ideal para
despliegues rápidos y propósitos de prueba. - Escenario del Mundo Real: Una startup prototipando rápidamente su backend de API usando endpoints estándar para probar varias características sin necesitar configuraciones de dominio personalizado. Este enfoque permite iteraciones rápidas y gestión efectiva de etapas.
- Caso de Uso: Ideal para
- Nombres de Dominio Personalizados
- Caso de Uso: Esencial para
APIs de cara al público donde la marca es importante. Mejora la apariencia profesional y memorabilidad. - Escenario del Mundo Real: Una empresa de comercio electrónico usa dominios personalizados para su API para asegurar una experiencia de marca consistente en su plataforma digital, mejorando la confianza y reconocimiento del cliente.
- Caso de Uso: Esencial para
- Integración con CloudFront
- Caso de Uso:
- APIs de cara al público donde la marca es importante.
El rendimiento y el control granular sobre la entrega de contenido son cruciales.- Evitar CORS.
- Escenario del Mundo Real:
- Un blog técnico (el mío) desplegado en Amazon S3 usando un enfoque SPA donde CORS era un problema en el pasado y quería eliminarlos y también mejorar la solución.
- Un servicio de streaming de medios usa CloudFront con API Gateway para distribuir contenido globalmente, reduciendo la latencia y mejorando la experiencia del espectador.
- Caso de Uso:
- Endpoints Privados (Integración VPC)
- Caso de Uso: Ideal para
APIs internas y microserviciosque no deben exponerse públicamente. - Escenario del Mundo Real: Una institución financiera aprovecha endpoints privados para comunicación interna segura entre servicios, asegurando privacidad de datos y cumplimiento.
- Caso de Uso: Ideal para
5. Detalles de Implementación para Exponer Endpoints de Amazon API Gateway
En esta sección, revisaremos los pasos de implementación de cada opción:
- URL de Endpoint Estándar
- Crear API en API Gateway: Elige API HTTP o REST y configúrala según tus requisitos.
- Desplegar API a una Etapa: Configura etapas como dev, test o prod. Despliega tu API a estas etapas.
- Acceder a la API: Usa la URL predeterminada proporcionada para acceder a tu API.
- Nombres de Dominio Personalizados
- Registrar un Dominio: Usa servicios como AWS Route 53 o cualquier otro registrador de dominios.
- Obtener un Certificado SSL: Obtén un certificado de AWS Certificate Manager (ACM) para conexiones HTTPS.
- Configurar Dominio Personalizado en API Gateway: En la sección ‘Custom Domain Names’ en API Gateway, configura tu dominio. Asócialo con una API y etapa específicas.
- Configuración DNS: Configura los ajustes DNS en tu registrador de dominios para apuntar al endpoint de API Gateway.
- Despliegue: Despliega tu API para aplicar estos cambios.
- Integración con CloudFront
- Crear una Distribución de CloudFront: En la consola de AWS CloudFront, crea una nueva distribución.
- Establecer API Gateway como Origen: Usa tu endpoint de API Gateway como origen. El ‘origin path’ debe ser tu {stage}.
- Crear un comportamiento.
- Patrón de ruta: ‘/api/*’. Entonces, tienes que crear un primer recurso en tu API con el nombre ‘api’ y luego incluir allí tus otros recursos. Ejemplo: ‘/api/count’, ‘/api/contact’, …
- Origen y grupos de origen: el origen de API Gateway definido en el paso anterior
- Clave de caché y solicitudes de origen: Política de caché y política de solicitud de origen (recomendado).
- Política de caché: CachingDisabled
- Política de solicitud de origen: UserAgentRefererHeaders o AllViewExceptHostHeader.
- Desplegar Distribución: Después de la configuración, despliega la distribución para hacerla activa.
- Endpoints Privados (Integración VPC)
- Crear un Endpoint VPC: En la consola VPC, crea un nuevo endpoint VPC para API Gateway.
- Configurar API Privada en API Gateway: Configura tu API para que sea privada y asóciala con tu endpoint VPC.
- Controlar Acceso: Usa políticas de endpoint VPC para gestionar el acceso a la API dentro de tu VPC.
6. Costo
- URL Estándar:
- Generalmente, el
costo más bajoya que usa el modelo de precios básico de API Gateway. - Los costos se basan principalmente en el número de llamadas API y transferencias de datos.
- Generalmente, el
- Dominio Personalizado:
- Implica costos adicionales para registro de dominio y certificado SSL (si no usas AWS Certificate Manager, que ofrece certificados SSL gratuitos).
- Los precios de API Gateway aún se aplican.
- Integración con CloudFront:
- Costos adicionales para CloudFront, se basan principalmente en transferencia de datos y números de solicitudes. CloudFront puede incurrir en costos más altos para tráfico pesado.
- Los cargos estándar de API Gateway también se aplican.
- Endpoint Privado (VPC):
- Costos por uso de endpoint VPC.
- Cargos estándar de API Gateway.
- Potencialmente costos de transferencia de datos más bajos dentro de la red AWS pero costos adicionales para endpoints VPC.
7. Más información
- URL de Endpoint Estándar
- Consejos de Solución de Problemas: Asegúrate de que la API esté desplegada a la etapa después de cualquier cambio. Si experimentas latencia, considera la región de despliegue versus la ubicación del usuario.
- Recursos: Documentación de AWS sobre Etapas de API Gateway.
- Nombres de Dominio Personalizados
- Consejos de Solución de Problemas: Verifica la configuración DNS y la validez del certificado SSL si encuentras problemas de acceso.
- Recursos: Documentación de AWS sobre Nombres de Dominio Personalizados.
- Integración con CloudFront
- Consejos de Solución de Problemas: Verifica la configuración de la distribución de CloudFront y las configuraciones de origen para cualquier discrepancia. Para problemas relacionados con CORS, asegúrate de que CloudFront esté configurado correctamente para agregar los encabezados necesarios a las respuestas.
- Recursos: Documentación de AWS sobre CloudFront.
- Endpoints Privados (Integración VPC)
- Consejos de Solución de Problemas: Confirma las configuraciones del servicio de endpoint VPC y las ACL de red si enfrentas problemas de conectividad.
- Recursos: Documentación de AWS sobre Endpoints VPC.
8. Conclusión
Utilizar Amazon API Gateway, particularmente con dominios personalizados y CloudFront, ofrece un marco robusto para desplegar y gestionar APIs. Estos servicios no solo mejoran el rendimiento y seguridad de tus APIs sino que también ofrecen escalabilidad y facilidad de gestión. La integración de dominios personalizados proporciona un toque de marca y profesional, mientras que CloudFront también asegura alcance global y baja latencia.
Experimentar con estas características y seguir las mejores prácticas puede optimizar significativamente tus estrategias de API. AWS proporciona una plataforma flexible y poderosa, y aprovechar su potencial completo puede transformar cómo gestionas y despliegas APIs. Adopta estas herramientas para llevar tus soluciones de API al siguiente nivel.
Finalmente, como conclusión, aquí tienes una tabla comparativa entre todas las opciones:
| Característica/Opción | URL Estándar | Dominio Personalizado | Integración CloudFront | Endpoint Privado (VPC) |
|---|---|---|---|---|
| Accesibilidad Global | Sí | Sí | Sí | No |
| Marca Personalizada | No | Sí | Sí | No |
| Optimización de Rendimiento | Básica | Básica | Avanzada | Básica |
| Seguridad | Estándar | Mejorada con SSL | Mejorada con Seguridad CDN | Mejorada dentro de VPC |
| Complejidad de Configuración | Baja | Media | Alta | Media |
| Caso de Uso Ideal | Pruebas/Desarrollo | APIs Públicas, Marca | APIs de Alto Tráfico, Usuarios Globales, Mitigación CORS | APIs Internas, Entornos Seguros |
| Implicaciones de Costo | Bajo | Medio | Medio-Alto | Medio-Alto |



