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.
Automatice CloudFront las actualizaciones cuando cambien los puntos finales del equilibrador de carga mediante Terraform
Creado por Tamilselvan P (AWS), Mohan Annam (AWS) y Naveen Suthar (AWS)
Resumen
Cuando los usuarios de Amazon Elastic Kubernetes Service (Amazon EKS) eliminan y vuelven a instalar su configuración de ingreso mediante gráficos de Helm, se crea un nuevo Application Load Balancer (ALB). Esto crea un problema porque Amazon CloudFront sigue haciendo referencia al registro DNS anterior de la ALB. Como resultado, no se podrá acceder a los servicios destinados a este punto final. (Para obtener más información sobre este flujo de trabajo problemático, consulte Información adicional).
Para resolver este problema, este patrón describe el uso de una AWS Lambda función personalizada que se desarrolló con Python. Esta función Lambda detecta automáticamente cuando se crea un nuevo ALB mediante las reglas de Amazon. EventBridge A continuación AWS SDK for Python (Boto3), la función actualiza la CloudFront configuración con la nueva dirección DNS del ALB, lo que garantiza que el tráfico se dirija al punto final correcto.
Esta solución automatizada mantiene la continuidad del servicio sin enrutamiento ni latencia adicionales. El proceso ayuda a garantizar que CloudFront siempre haga referencia al punto final DNS de ALB correcto, incluso cuando la infraestructura subyacente cambie.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS.
Ejemplo de aplicación web para pruebas y validaciones que se implementa en Amazon EKS mediante Helm. Para obtener más información, consulte Implementación de aplicaciones con Helm en Amazon EKS en la documentación de Amazon EKS.
Configure CloudFront para enrutar las llamadas a un ALB creado por un controlador de ingreso
de Helm. Para obtener más información, consulte Instalar el controlador de AWS Load Balancer con Helm en la documentación de Amazon EKS y Restringir el acceso a los balanceadores de carga de aplicaciones en la documentación. CloudFront Terraform se instaló
y configuró en un espacio de trabajo local.
Limitaciones
Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad regional, consulta AWS Servicios por región
. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el servicio.
Versiones de producto
Terraform, versión 1.0.0 o posterior
Terraform AWS Provider versión 4.20
o posterior
Arquitectura
En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

Esta solución lleva a cabo los siguientes pasos:
El controlador de ingreso Amazon EKS crea un nuevo Application Load Balancer (ALB) cada vez que se reinicia o despliega Helm.
EventBridge busca eventos de creación de ALB.
El evento de creación de ALB activa la función Lambda.
La función Lambda se implementó en base a Python 3.9 y utiliza la API boto3 para realizar llamadas. Servicios de AWS La función Lambda actualiza la CloudFront entrada con el nombre DNS más reciente del balanceador de carga, que se recibe de los eventos de creación del balanceador de carga.
Herramientas
Servicios de AWS
Amazon CloudFront acelera la distribución de tu contenido web al distribuirlo a través de una red mundial de centros de datos, lo que reduce la latencia y mejora el rendimiento.
Amazon Elastic Kubernetes Service (Amazon EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes.
Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos finales de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
AWS SDK for Python (Boto3)
es un kit de desarrollo de software que le ayuda a integrar su aplicación, biblioteca o script de Python con Servicios de AWS.
Otras herramientas
Repositorio de código
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configura y configura la CLI de Git. | Para instalar y configurar la interfaz de línea de comandos (CLI) de Git en su estación de trabajo local, siga las instrucciones de Introducción a la instalación de Git | DevOps ingeniero |
Cree la carpeta del proyecto y añada los archivos. |
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente la solución. | Para implementar recursos en el objetivo Cuenta de AWS, siga los siguientes pasos:
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Valide la implementación. |
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Limpie la infraestructura. | Para limpiar la infraestructura que creó anteriormente, siga los siguientes pasos:
| DevOps ingeniero |
Solución de problemas
Problema | Solución |
---|---|
Error al validar las credenciales del proveedor | Al ejecutar Terraform
Este error se debe a la caducidad del token de seguridad de las credenciales usadas en la configuración de la máquina local. Para resolver el error, consulta Establecer y ver los ajustes de configuración en la documentación AWS Command Line Interface (AWS CLI). |
Recursos relacionados
AWS resources
Documentación de Terraform
Información adicional
Flujo de trabajo problemático

En el diagrama, se muestra el siguiente flujo de trabajo:
Cuando el usuario accede a la aplicación, la llamada se dirige a. CloudFront
CloudFront enruta las llamadas al Application Load Balancer (ALB) correspondiente.
El ALB incluye las direcciones IP de destino, que son las direcciones IP del pod de aplicaciones. A partir de ahí, el ALB proporciona al usuario los resultados esperados.
Sin embargo, este flujo de trabajo demuestra un problema. Los despliegues de aplicaciones se realizan a través de gráficos de Helm. Siempre que hay un despliegue o si alguien reinicia Helm, también se vuelve a crear la entrada correspondiente. Como resultado, el controlador del equilibrador de carga externo vuelve a crear el ALB. Además, durante cada recreación, el ALB se vuelve a crear con un nombre de DNS diferente. Debido a esto, CloudFront tendrá una entrada obsoleta en la configuración de origen. Debido a que esta entrada está obsoleta, el usuario no podrá acceder a la aplicación. Este problema provoca un tiempo de inactividad para los usuarios.
Solución alternativa
Otra posible solución es crear un DNS externo