Gestión de Stacks en AWS CloudFormation

Clase 10 de 38Curso de Infraestructura Como Código en AWS

Resumen

¿Qué es un Stack en AWS CloudFormation?

En el contexto de AWS CloudFormation, un Stack es esencialmente un conjunto de recursos que se gestionan de manera unitaria. Esto significa que tú, como desarrollador o ingeniero de devops, puedes gestionar múltiples recursos como una sola entidad. Considera un escenario donde has desplegado una base de datos, una función Lambda, y un bucket de S3: todos estos recursos se agrupan en un único Stack.

CloudFormation asegura que todos estos recursos se creen al mismo tiempo. Si falla la creación de un recurso, por ejemplo, el bucket de S3, el sistema eliminará automáticamente los otros recursos, como la función Lambda y la base de datos, garantizando que no queden recursos a medio configurar.

¿Cómo gestiona los errores AWS CloudFormation?

Un aspecto clave de AWS CloudFormation es su mecanismo automático de rollback. En caso de un fallo en la creación de cualquiera de los recursos dentro del Stack, el sistema eliminará los recursos ya creados, evitando configuraciones parciales. Esta funcionalidad asegura que si algo sale mal, no quedes con una infraestructura a medias que podría causar problemas mayores.

Sin embargo, AWS CloudFormation ofrece flexibilidad al permitir, mediante el "troubleshooting" adecuado, detenerse si un recurso falla. En este escenario, puedes acceder a la consola para identificar y corregir el error, antes de decidir si eliminar los recursos. Usualmente, el comportamiento estándar es remover todos los recursos si uno solo falla al crearse.

¿Qué sucede al borrar un Stack?

Eliminar un Stack es un proceso crítico, ya que implica la eliminación de todos los recursos asociados. Esto significa que, si no tienes cuidado, podrías borrar toda la infraestructura o aplicación en la que estás trabajando. Por lo tanto, gestionar múltiples Stacks requiere atención meticulosa. Siempre verifica y confirma antes de borrar un Stack para asegurarte de que no afectará funcionalidades críticas de la aplicación.

¿Qué es un Drift en AWS CloudFormation?

En AWS CloudFormation, el "Drift" se refiere a la desviación entre la configuración original que fue desplegada y el estado actual en la consola. Por ejemplo, si despliegas una función Lambda y una base de datos pero luego cambias manualmente las configuraciones del bucket S3, esta acción genera un Drift. Estos desajustes no son una buena práctica ya que podrían ocasionar desincronizaciones y problemas en futuras actualizaciones.

Para abordar estos desajustes, los Drifts permiten identificar y corregir estas desviaciones para volver al estado original. Es esencial que todas las actualizaciones y cambios se realicen a través de CloudFormation para mantener una administración centralizada y evitar posibles conflictos.

¿Cómo desplegar un Stack utilizando plantillas?

El despliegue de un Stack en AWS CloudFormation se realiza usualmente mediante plantillas (templates), que pueden crearse en formato JSON o YAML. Estas plantillas describen la infraestructura, permitiendo cargarla a CloudFormation de dos formas:

  1. Carga directa a S3: Puedes almacenar la plantilla en un bucket de S3 y proporcionar la ruta a CloudFormation.
  2. Carga directa a CloudFormation: Alternativamente, puedes subir la plantilla directamente a CloudFormation.

Una vez cargada, CloudFormation realiza una validación sobre la sintaxis y los recursos definidos antes de proceder con el despliegue. Esto se lleva a cabo para asegurar que tanto en formato JSON como YAML, las estructuras y definiciones sean correctas y estén bien configuradas.

No te preocupes si los conceptos parecen abstractos ahora; en los laboratorios prácticos que iremos desarrollando, aplicarás estos conocimientos para reforzarlos en la práctica. ¡Te animamos a continuar aprendiendo y a no desistir! La práctica te ayudará a profundizar en estos conceptos y a manejarlos con soltura.