Cómo Exponer un Application Load Balancer Interno con CloudFront
- Ignacio Rubio
- 30 abr
- 3 Min. de lectura
Actualizado: 5 jun

Esta publicación explica cómo entregar contenido desde un Balanceador de Carga de Aplicaciones Interno (ALB) utilizando Amazon CloudFront y orígenes VPC. Los orígenes VPC son la clave para esta implementación, la cual proporciona los siguientes beneficios:
Seguridad: Podemos mejorar la seguridad de CloudFront al utilizar la distribución de CloudFront como el único punto de acceso a nuestras aplicaciones, manteniendo privado el ALB y la capa de computación. Se pueden implementar controles de acceso efectivos para asegurar aún más las comunicaciones.
Gestión: Los orígenes VPC nos permiten mantener los orígenes de CloudFront en subredes privadas, reduciendo la sobrecarga de implementar ACLs y otros mecanismos para asegurar los puntos finales públicos. Al gestionar el tráfico de red de manera eficiente, podemos optimizar el rendimiento de la aplicación.
Escalabilidad y rendimiento: Usar CloudFront como el punto de entrada para nuestros sistemas mejora la alta disponibilidad y la escalabilidad global mientras asegura la aplicación. Por otro lado, utilizar ubicaciones de borde ayuda a mejorar los tiempos de respuesta tanto para contenido estático como dinámico.
El siguiente diagrama es un ejemplo de una infraestructura utilizando un origen VPC y un ALB privado.

Los objetivos del ALB en este ejemplo son dos instancias EC2; sin embargo, podemos usar cualquier tipo de objetivo disponible para ALBs. Consulta esta documentación para más información.
Prerequisitos
Una VPC (Nube Virtual Privada) en la misma cuenta de AWS que la distribución de CloudFront y en una región que soporte origen VPC (ver aquí).
Se requiere una puerta de enlace a Internet en la VPC para recibir tráfico desde Internet.
Al menos dos subredes privadas en diferentes Zonas de Disponibilidad para alojar el ALB.
Pasos de implementaci[on
Crear el ALB
Este paso consiste en desplegar un nuevo Balanceador de Carga Interno en las subredes privadas de tu VPC; deben ser al menos dos.


Debemos adjuntar un Grupo de Seguridad que permita el tráfico entrante desde la lista de prefijos administrada por CloudFront.

En este caso, solo permití el puerto HTTPS (443/TCP) porque mi ALB solo tiene un oyente HTTPS.

Si usas diferentes oyentes, considera actualizar la regla del grupo de seguridad para proporcionar el acceso adecuado. También puedes adjuntar más de un grupo de seguridad, por ejemplo, si deseas proporcionar acceso interno al ALB.
Crear un origen VPC y la distribución de CloudFront
Ahora debemos crear un nuevo origen VPC para proporcionar acceso al ALB interno desde tu distribución de CloudFront.
Ve a la consola de CloudFront.
Elige orígenes VPC, Crear origen VPC.
Completa los campos requeridos. Para el ALB de origen, selecciona el ARN del ALB creado en el paso anterior. Esto también es posible para Balanceadores de Carga de Red (NLB) e instancias EC2.
Haz clic en Crear origen VPC.

Elegí solo HTTPS en Protocolo porque es el único oyente que tengo configurado en el ALB.
En la consola de CloudFront, elige Distribuciones, Crear distribución.
Desde el dominio de origen, selecciona el origen VPC recién creado.

Ten en cuenta seleccionar el origen VPC aquí y no el Balanceador de Carga Elástico, porque no funcionará para un ALB interno.
No estoy proporcionando más configuraciones para la distribución de CloudFront en esta publicación porque es la misma que para cualquier origen.
Una vez que la distribución de CloudFront esté desplegada, puedes probar el acceso utilizando el nombre de dominio predeterminado asociado con ella (o cualquier nombre alternativo que hayas creado).
Casos de uso para esta implementación
Redirigir la solicitud HTTP a HTTPS en la distribución de CloudFront
Con esta implementación, puedes redirigir HTTP a HTTPS directamente en la distribución de CloudFront y tener solo un oyente HTTPS en el ALB. Todo el tráfico entre la distribución de CloudFront y el ALB es HTTPS y se realiza a través del enlace privado de AWS.
Implementar DNS Split Horizon
Route 53 te permite tener zonas alojadas públicas y privadas. Mientras utilizas tu zona pública para resolver el punto final de distribución de CloudFront (por ejemplo, con un registro Alias) desde Internet, el punto final interno del ALB puede resolverse desde tu zona alojada privada (con un registro Alias diferente). Los nombres de dominio en las zonas alojadas privadas solo pueden resolverse desde dentro de la VPC.
Mejorar la seguridad utilizando WAF y Shield
Aunque no se menciona aquí, el Firewall de Aplicaciones Web de AWS (WAF) puede integrarse tanto con el ALB como con CloudFront para proteger tus aplicaciones web utilizando reglas gestionadas y personalizadas. Al mismo tiempo, la Amazon Shield Standard está habilitada por defecto para proteger tu distribución de CloudFront contra ataques DDoS (no tiene integración directa con el ALB).
Fuentes

Ignacio Rubio
Cloud Engineer
Teracloud