Qué sucede durante una actualización de stack de CloudFormation - Detrás de change sets, rollbacks y reemplazos
Aprenda sobre el flujo de procesamiento interno cuando CloudFormation actualiza un stack, incluyendo cómo los change sets detectan diferencias, la lógica detrás de las decisiones de actualización, reemplazo y eliminación de recursos, y cómo funcionan los rollbacks.
Detección de diferencias en plantillas - Cómo se identifican los cambios
Cuando actualiza un stack de CloudFormation, el servicio primero compara la nueva plantilla con la plantilla actual para identificar qué ha cambiado. Los change sets formalizan este proceso: al crear un change set, CloudFormation analiza las diferencias y reporta exactamente qué recursos se verán afectados y cómo. La detección de diferencias opera a nivel de propiedad: si una propiedad de un recurso cambió, ese recurso se marca para actualización. Si se agregó un nuevo recurso, se marca para creación. Si se eliminó un recurso de la plantilla, se marca para eliminación. Los change sets también indican si una actualización requiere reemplazo del recurso (un detalle crítico que puede causar tiempo de inactividad).
Actualización, reemplazo y eliminación - Diferentes comportamientos de actualización por recurso
No todas las actualizaciones de recursos se comportan igual. CloudFormation clasifica las actualizaciones en tres categorías. La actualización sin interrupción modifica el recurso in situ sin tiempo de inactividad (por ejemplo, cambiar el timeout de una función Lambda). La actualización con alguna interrupción puede causar una breve interrupción (por ejemplo, cambiar el tipo de instancia EC2 requiere un reinicio). El reemplazo crea un nuevo recurso y elimina el antiguo (por ejemplo, cambiar el nombre de una tabla DynamoDB). La documentación de CloudFormation especifica el comportamiento de actualización para cada propiedad de cada tipo de recurso. Comprender estos comportamientos es esencial para planificar actualizaciones seguras. Para profundizar sus conocimientos sobre diseño IaC, libros especializados en Amazon pueden ser útiles.
Resolución de dependencias y orden de actualización
CloudFormation resuelve las dependencias entre recursos para determinar el orden de actualización. Los recursos se actualizan en orden topológico basado en sus dependencias (referencias !Ref, !GetAtt y DependsOn explícitos). Los recursos sin dependencias entre sí pueden actualizarse en paralelo. Cuando un recurso requiere reemplazo, CloudFormation primero crea el nuevo recurso, actualiza las referencias en los recursos dependientes y luego elimina el recurso antiguo. Este enfoque de "crear antes de eliminar" minimiza el tiempo de inactividad pero requiere que los límites de servicio permitan la existencia temporal de ambos recursos.
Cómo funcionan los rollbacks - Hasta dónde retrocede en caso de fallo
Cuando una actualización de stack falla, CloudFormation inicia un rollback automático. El rollback revierte todos los cambios realizados durante la actualización fallida, restaurando el stack a su estado anterior. El alcance del rollback depende de dónde ocurrió el fallo: si el recurso A se actualizó exitosamente pero el recurso B falló, CloudFormation revierte el recurso A a su estado anterior. Para reemplazos, si el nuevo recurso se creó pero la actualización posterior falló, CloudFormation elimina el nuevo recurso y restaura el antiguo. Los rollbacks pueden fallar en sí mismos (estado UPDATE_ROLLBACK_FAILED), requiriendo intervención manual con ContinueUpdateRollback o skip de recursos específicos.
Medidas prácticas para actualizaciones seguras de stacks
Las medidas prácticas para actualizaciones seguras de stacks incluyen: siempre usar change sets para previsualizar cambios antes de ejecutarlos, habilitar la protección contra terminación para stacks de producción, usar políticas de stack para prevenir actualizaciones o eliminaciones de recursos críticos, implementar despliegues canary con StackSets para probar cambios en un subconjunto de cuentas primero, y mantener la capacidad de rollback asegurando que los recursos puedan volver a su estado anterior. Monitorear los eventos del stack durante las actualizaciones y configurar alarmas de CloudWatch como condiciones de rollback proporciona detección automática de problemas post-despliegue.