¿Cómo puedo hacer que el proceso de depuración de la plantilla sea más rápido o me quedo atascado para siempre notando mis errores media hora después de cometerlos?
Aquí hay algunas sugerencias de mejores prácticas, que se centran específicamente en mejorar la velocidad de iteración del desarrollo complejo de plantillas de CloudFormation:
Utilice las herramientas de CloudFormation para validar plantillas y apilar actualizaciones
AWS ya los describió en su propio documento de Mejores prácticas , por lo que no los repetiré:
El objetivo de este paso es detectar errores lógicos o de sintaxis obvios antes de realizar una creación / actualización de la pila.
Probar recursos de forma aislada
Antes de usar cualquier recurso de CloudFormation individual en una pila compleja, asegúrese de comprender a fondo el alcance total del comportamiento de creación / actualización / eliminación de ese recurso, incluidos los límites de uso y los tiempos de inicio / desmontaje típicos, probando su comportamiento en pilas independientes más pequeñas. primero.
- Si está desarrollando o utilizando recursos personalizados de terceros, escriba pruebas unitarias con las bibliotecas adecuadas para la plataforma del lenguaje, para asegurarse de que la lógica de la aplicación se comporte como se espera en todos los casos de uso.
- Tenga en cuenta que la cantidad de tiempo para que un recurso individual cree / actualice / elimine puede variar ampliamente entre los tipos de recursos, según el comportamiento de las llamadas API subyacentes. Por ejemplo, un
AWS::CloudFront::Distribution
recurso complejo a veces puede tardar entre 30 y 60 minutos en crearse / actualizarse / eliminarse, mientras que un recurso se AWS::EC2::SecurityGroup
actualiza en segundos.
- Los recursos individuales pueden tener errores / problemas / limitaciones en su implementación, que son mucho más fáciles de depurar y desarrollar soluciones cuando se prueban de forma aislada, en lugar de dentro de una pila mucho más grande. Tenga en cuenta las limitaciones, como los límites del servicio de AWS, según la configuración de su cuenta de AWS individual, o la disponibilidad regional de los servicios, según la región en la que cree su pila.
Construya pilas complicadas en pequeños incrementos
Al realizar la creación / actualización de una pila, una falla en cualquier recurso hará que la pila revierta todo el conjunto de cambios de recursos, lo que puede destruir innecesariamente otros recursos creados con éxito y tomar mucho tiempo cuando se construye una pila complicada con un largo gráfico de dependencia de recursos asociados.
La solución a esto es construir su Pila de forma incremental en lotes de Actualización más pequeños, agregando Recursos uno (o unos pocos) a la vez. De esta manera, si / cuando ocurre una falla en la creación / actualización de un recurso, la reversión no hace que se destruyan todos los recursos de su Pila, solo el conjunto de Recursos cambiado en la última Actualización.
Supervisar el progreso de las actualizaciones de la pila
Asegúrese de monitorear el progreso de la actualización de su pila viendo los eventos de la pila mientras se realiza una creación / actualización. Este será el punto de partida para depurar más problemas con recursos individuales.