

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
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer"></a>

*Saurabh Kothari, Amazon Web Services*

## Resumen
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-summary"></a>

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
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-prereqs"></a>

**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 local a una cuenta de AWS configurada mediante AWS Direct Connect o AWS VPN Site-to-Site
+ Una [zona alojada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) en la documentación de Elastic Load Balancing.

## Arquitectura
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-architecture"></a>

**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.

![Arquitectura que utiliza las reglas de oyente del equilibrador de carga de aplicación para dirigir el tráfico web.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/83145062-4535-4ad0-8947-4ea8950cd174/images/12715186-26ea-4123-b9ef-e3105a934ff3.png)


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.

1. 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.

1. 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-interfaces](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-network-interfaces.html)envían [describe-vpc-endpoints](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-vpc-endpoints.html)y devuelven las direcciones IP y el grupo de seguridad, que se pueden utilizar para crear el grupo de direcciones IP objetivo de la API.

## Tools (Herramientas)
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-tools"></a>
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) es un servicio web de sistema de nombres de dominio (DNS) escalable y de alta disponibilidad.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) le ayuda a crear, almacenar y renovar claves y certificados SSL/TLS X.509 públicos y privados que protegen sus sitios web y aplicaciones de AWS.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) es un marco de desarrollo de software que lo ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
+ [AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) le PrivateLink ayuda a crear conexiones unidireccionales y privadas entre sus servicios externos VPCs a la VPC.

## Epics
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-epics"></a>

### Crear un certificado SNI
<a name="create-an-sni-certificate"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un certificado SNI e impórtelo a ACM. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de red | 

### Implemente un punto de conexión de VPC en una subred privada no enrutable
<a name="deploy-a-vpc-endpoint-in-a-non-routable-private-subnet"></a>


| Tarea | Descripción | Habilidades 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](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) en la documentación de Amazon Virtual Private Cloud (Amazon VPC). | Administrador de la nube | 

### Configure el Equilibrador de carga de aplicación
<a name="configure-the-application-load-balancer"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Creación de un grupo de destino para la aplicación. | [Creación de un grupo de destino](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) 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. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de la nube | 
| Cree un Equilibrador de carga de aplicación. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de la nube | 
| Cree reglas de oyentes. | Cree [reglas de oyente](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules) para hacer lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de la nube | 

### Configure Route 53
<a name="configure-route-53"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una zona alojada privada. | [Cree una zona alojada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) para domain.com. | Administrador de la nube | 
| Cree registros de dominio. | [Cree registros CNAME](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) para lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de la nube | 

### Cree un punto de conexión de API privado en la API Gateway
<a name="create-a-private-api-endpoint-in-api-gateway"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y configure un punto de conexión de API privado. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Desarrollador de aplicaciones, administrador de la nube | 
| Cree un nombre de dominio personalizado. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de la nube | 

## Recursos relacionados
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-resources"></a>
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Equilibrador de carga de aplicación](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)