Implemente una API de Amazon API Gateway en un sitio web interno mediante puntos de conexión privados y un Equilibrador de carga de aplicación - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente una API de Amazon API Gateway en un sitio web interno mediante puntos de conexión privados y un Equilibrador de carga de aplicación

Creado por Saurabh Kothari (AWS)

Entorno: producción

Tecnologías: aplicaciones web y móviles; redes; sin servidor; infraestructura

Servicios de AWS: Amazon API Gateway; Amazon Route 53; AWS Certificate Manager (ACM)

Resumen

Este patrón muestra cómo implementar una API de Amazon API Gateway en un sitio web interno al que se puede acceder desde una red en las instalaciones. Aprenderá a crear un nombre de dominio personalizado para una API privada mediante una arquitectura diseñada con puntos de enlace privados, un Application Load Balancer, PrivateLink AWS y Amazon Route 53. Esta arquitectura evita las consecuencias imprevistas del uso de un nombre de dominio y un servidor proxy personalizados para facilitar el enrutamiento basado en el dominio en una API. Por ejemplo, si despliega un punto de conexión de nube privada virtual (VPC) en una subred no enrutable, su red no podrá acceder a API Gateway. Una solución habitual consiste en utilizar un nombre de dominio personalizado y, a continuación, implementar la API en una subred enrutable, pero esto puede dañar otros sitios internos cuando la configuración del proxy transfiere el tráfico (execute-api.{region}.vpce.amazonaws.com) a AWS Direct Connect. Por último, este patrón puede ayudarle a cumplir los requisitos organizativos relacionados con el uso de una API privada a la que no se pueda acceder desde Internet y un nombre de dominio personalizado.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Un certificado de indicación de nombre de servidor (SNI) para su sitio web y API

  • Una conexión desde un entorno en las instalaciones a una cuenta de AWS configurada mediante AWS Direct Connect o AWS Site-to-Site VPN

  • Una zona alojada privada con el dominio correspondiente (por ejemplo, domain.com) que se resuelve desde una red en las instalaciones y reenvía las consultas de DNS a Route 53

  • Una subred privada enrutable a la que se puede acceder desde una red en las instalaciones

Limitaciones

Para obtener más información sobre las cuotas (antes denominadas límites) para los equilibradores de carga, las reglas y otros recursos, consulte Cuotas para los Equilibrador de carga de aplicación en la documentación de Elastic Load Balancing.

Arquitectura

Pila de tecnología

  • Amazon API Gateway

  • Amazon Route 53

  • Equilibrador de carga de aplicación

  • AWS Certificate Manager

  • AWS PrivateLink

Arquitectura de destino

En el siguiente diagrama, se muestra cómo se implementa un Equilibrador de carga de aplicación en una VPC que dirige el tráfico web a un grupo objetivo de un sitio web o a un grupo objetivo de la API Gateway en función de las reglas de oyenete de Equilibrador de carga de aplicación. El grupo objetivo de API Gateway es una lista de direcciones IP para el punto de conexión de VPC en la API Gateway. Puerta de enlace de API está configurado para hacer que la API sea privada con su política de recursos. La política deniega todas las llamadas que no procedan de un punto de conexión de VPC específico. Los nombres de dominio personalizados de la API Gateway se actualizan para usar api.domain.com para la API y su fase. Las reglas de Equilibrador de carga de aplicación se agregan para enrutar el tráfico en función del nombre del host.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Un usuario de una red en las instalaciones intenta acceder a un sitio web interno. La solicitud se envía a ui.domain.com y api.domain.com. A continuación, la solicitud se resuelve en el Equilibrador de carga de aplicación interno de la subred privada enrutable. El SSL finaliza en el Equilibrador de carga de aplicación de ui.domain.com y api.domain.com.

  2. Las reglas de oyente, configuradas en Equilibrador de carga de aplicación, comprueban el encabezado del host.

    a. Si el encabezado del host es api.domain.com, la solicitud se reenvía al grupo objetivo de la API Gateway. El Equilibrador de carga de aplicación inicia una nueva conexión a la API Gateway a través del puerto 443.

    b. Si el encabezado del host es ui.domain.com, la solicitud se reenvía al grupo objetivo del sitio web.

  3. Cuando la solicitud llega a la API Gateway, la asignación de dominios personalizada configurada en la API Gateway determina el nombre de host y la API que se debe ejecutar.

Automatizar y escalar

Los pasos de este patrón se pueden automatizar mediante AWS CloudFormation o el AWS Cloud Development Kit (AWS CDK). Para configurar el grupo objetivo de las llamadas a la API Gateway, debe usar un recurso personalizado para recuperar la dirección IP del punto de conexión de VPC. Las llamadas a la API describe-network-interfacesenvían describe-vpc-endpointsy devuelven las direcciones IP y el grupo de seguridad, que se pueden utilizar para crear el grupo de direcciones IP objetivo de la API.

Herramientas

  • Amazon API Gateway le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket API a cualquier escala.

  • Amazon Route 53 es un servicio web de sistema de nombres de dominio (DNS) escalable y de alta disponibilidad.

  • AWS Certificate Manager (ACM) le ayuda a crear, almacenar y renovar certificados y claves SSL/TLS X.509 públicos y privados que protegen sus sitios web y aplicaciones de AWS.

  • AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.

  • AWS le PrivateLink ayuda a crear conexiones unidireccionales y privadas desde sus VPC a servicios externos a la VPC.

Epics

TareaDescripciónHabilidades requeridas

Cree un certificado SNI e impórtelo a ACM.

  1. Cree un certificado SNI para ui.domain.com y api.domain.com. Para obtener más información, consulta Cómo CloudFront atender las solicitudes HTTPS en la CloudFront documentación de Amazon.

  2. Importe los certificados SNI a AWS Certificate Manager (ACM). Para obtener más información sobre estas dos opciones, consulte Importar certificados a AWS Certificate Manager en la documentación de ACM.

Administrador de red
TareaDescripciónHabilidades requeridas

Creación de un punto de conexión de VPC de la interfaz para API Gateway.

Para crear un punto de conexión de VPC de interfaz, siga las instrucciones de Acceder a un servicio de AWS mediante un punto de conexión de VPC de interfaz en la documentación de Amazon Virtual Private Cloud (Amazon VPC).

Administrador de la nube
TareaDescripciónHabilidades requeridas

Creación de un grupo de destino para la aplicación.

Creación de un grupo de destino para los recursos de interfaz de usuario de su aplicación.

Administrador de la nube

Cree un grupo objetivo para el punto de conexión de la API Gateway.

  1. Cree un grupo de destino con un tipo de dirección IP y, a continuación, añada la dirección IP del punto de conexión de VPC del punto de conexión de la API Gateway al grupo de destino.

  2. Configure las comprobaciones de estado para sus grupos objetivo con los códigos de éxito 200 y 403. El 403 es obligatorio porque la API puede utilizar la autenticación y devolver una respuesta 403.

Administrador de la nube

Cree un Equilibrador de carga de aplicación.

  1. Cree un Equilibrador de carga de aplicación (interno) en una subred privada enrutable.

  2. Añada el oyente 443 al Equilibrador de carga de aplicación y, a continuación, elija el certificado de ACM.

Administrador de la nube

Cree reglas de oyentes.

Cree reglas de oyente para hacer lo siguiente:

  1. Reenviar el host api.domain.com al grupo objetivo de la API Gateway

  2. Reenvíe el host ui.domain.com al grupo de destino de los recursos de la interfaz de usuario

Administrador de la nube
TareaDescripciónHabilidades requeridas

Crear una zona alojada privada.

Cree una zona alojada privada para domain.com.

Administrador de la nube

Cree registros de dominio.

Cree registros CNAME para lo siguiente:

  • Una API con el valor establecido en el nombre DNS del Equilibrador de carga de aplicación

  • Una interfaz de usuario con el valor establecido en el nombre DNS del Equilibrador de carga de aplicación

Administrador de la nube
TareaDescripciónHabilidades requeridas

Cree y configure un punto de conexión de API privado.

  1. Para crear un punto de conexión de API privado, siga las instrucciones de Cómo crear una API privada en Amazon API Gateway en la documentación de API Gateway. 

  2. Configure la política de recursos para permitir las llamadas únicamente a la API desde el punto de conexión de VPC. Para obtener más información, consulte Controlar el acceso a una API con las políticas de recursos de API Gateway en la documentación de API Gateway.

Desarrollador de aplicaciones, administrador de la nube

Cree un nombre de dominio personalizado.

  1. Crea un nombre de dominio personalizado para api.domain.com. Para obtener más información, consulte Configuración de nombres de dominio personalizados para API de REST en la documentación de API Gateway.

  2. Seleccione la API y la etapa creadas. Para obtener más información, consulte Trabajar con asignaciones de API para API de REST en la documentación de API Gateway.

Administrador de la nube

Recursos relacionados