Las plantillas de CloudFormation ofrecen varios beneficios:

  • Seguir un formato conocido: una plantilla de CloudFormation es un archivo de texto con formato JSON (JavaScript Object Notation) o YAML que describe la infraestructura de AWS necesaria para ejecutar una aplicación o un servicio, junto con las interconexiones que existan entre ellos.
  • Administrar relaciones: las plantillas contienen una descripción concisa de las relaciones existentes entre los recursos, por ejemplo las instancias EC2 que deben asociarse con un balanceador de carga de Elastic Load Balancing, o la necesidad de que un volumen de EBS esté en la misma zona de disponibilidad de EC2 que la instancia a la que se conecta.
  • Uso constante: la utilización de los parámetros de las plantillas permite utilizar una única plantilla para muchas implementaciones de la infraestructura con diferentes valores de configuración, como cuántas instancias hay que implementar para la aplicación.
  • Obtener comentarios útiles: las plantillas también ofrecen propiedades de salida para comunicar al usuario los resultados de implementación o información relativa a la configuración. Por ejemplo, cuando se incluye en una instancia, una plantilla puede incluir la URL del punto de conexión de Elastic Load Balancing que el usuario debería utilizar para conectarse a la aplicación que acaba de incluir en una instancia.
  • Evitar conflictos: todos los recursos de AWS incluidos en una plantilla se identifican mediante nombres lógicos, lo que permite crear varias pilas a partir de una plantilla sin temor a encontrarse con conflictos de nomenclatura entre recursos de AWS.
  • Escribir y listo: utilice cualquier método para lanzar una pila sin tener que registrar previamente la plantilla en AWS CloudFormation.
  • Visualización de la pila: CloudFormation Designer permite ver las plantillas en un diagrama. La herramienta permite ver fácilmente los recursos de AWS y sus relaciones, y organizarlos espacialmente de modo tal que el diagrama resulte comprensible. Puede modificar las plantillas arrastrando los elementos con el ratón y con el editor de JSON integrado. Los cambios que haga en el diagrama se trasladarán automáticamente al código JSON de la plantilla.
  • Buscar recursos: AWS CloudFormation conserva una copia de la plantilla de pila para poder utilizar la consola de administración de AWS, las herramientas de línea de comandos o las API con objeto de consultar las configuraciones precisas de recursos que se aplicaron durante la creación de la pila.
  • Automatizar: tiene la opción de automatizar la generación de plantillas con la utilización de un lenguaje de programación o una herramienta de su elección. También puede automatizar la creación de pilas a partir de plantillas mediante la API de CloudFormation, los SDK de AWS o la CLI de AWS.

Una plantilla tiene la siguiente estructura de JSON de alto nivel:

Comience a usar AWS de forma gratuita

Cree una cuenta gratuita
O inicie sesión en la consola

Disfrute de doce meses de acceso a la capa gratuita de AWS y de las características del nivel Basic de AWS Support, que incluyen un servicio ininterrumpido de servicio al cliente, foros de soporte, y más.

{

    "Description" : "Una descripción del uso de la plantilla",

    "Parameters": {

        // Un conjunto de entradas utilizadas para personalizar la plantilla por implementación

    },

    "Resources" : {

        // El conjunto de recursos de AWS y las relaciones entre ellos

    },

    "Outputs" : {

        // Un conjunto de valores que podrá ver el creador de la pila

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

La siguiente plantilla es un ejemplo sencillo en el que se muestra cómo crear una instancia EC2:

{

    "Description" : "Crear una instancia EC2 que ejecute la AMI de 32 bits de Amazon Linux.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "El par de claves de EC2 para permitir el acceso mediante SSH a la instancia",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

            "Type" : "AWS::EC2::Instance",

            "Properties" : {

                "KeyName" : { "Ref" : "KeyPair" },

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "El ID de la nueva instancia EC2",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

Una pila es un conjunto de recursos que se producen como resultado de la inclusión de una plantilla en una instancia. Para crear una pila, es necesario proporcionar una plantilla y todos los parámetros necesarios para AWS CloudFormation. Según la plantilla y las dependencias especificadas en ella, AWS CloudFormation determina qué recursos de AWS deben crearse y en qué orden.

Para actualizar una pila, debe proporcionar una plantilla con la configuración deseada de todos los recursos de la pila. Puede modificar las propiedades de los recursos existentes de su pila para que reaccionen a los cambios del entorno o a los nuevos requisitos de las aplicaciones. Por ejemplo, puede cambiar los umbrales de alarma de sus alarmas de AWS CloudWatch o actualizar la AMI que se ejecuta en una instancia de la pila. AWS CloudFormation se encarga de aplicar dichos cambios a los diferentes recursos de la pila. En muchos casos, los cambios se realizarán sin afectar a la aplicación en ejecución. No obstante, si un cambio no se puede realizar de forma dinámica (como la actualización de la AMI en una instancia EC2), AWS CloudFormation creará un recurso nuevo, lo reconectará a la pila y, una vez que el servicio ha determinado que la actualización completa se realizará correctamente, eliminará ​el recurso anterior.

AWS CloudFormation creará o actualizará una pila completa. Si una pila no se puede crear o actualizar completamente, AWS CloudFormation la desmontará. A efectos de depuración, la operación de restauración puede deshabilitarse y volver a intentar crear o actualizar la pila manualmente en otro momento.

AWS CloudFormation Designer también permite crear o modificar la plantilla de una pila y luego enviarla a AWS CloudFormation para crear o actualizar la pila. AWS CloudFormation Designer está disponible con la consola de administración de AWS.

Es fácil obtener acceso a AWS CloudFormation desde la consola de administración de AWS, que ofrece una interfaz basada en web que se puede controlar con el ratón para implementar y administrar pilas. Es posible crear, eliminar y actualizar una aplicación desde la consola de administración de AWS en unos sencillos pasos.

AWS CloudFormation Designer es una herramienta visual que ofrece una interfaz para añadir recursos a las plantillas arrastrándolos con el ratón. CloudFormation Designer permite dedicar más tiempo a diseñar la infraestructura de AWS, y menos a la codificación manual de las plantillas. Por ejemplo, al añadir o quitar recursos, CloudFormation Designer modifica automáticamente el código JSON subyacente. También se puede utilizar el editor de texto integrado para especificar detalles de la plantilla, por ejemplo valores de propiedades de recursos y parámetros de entrada. Puede obtener más información en la documentación.

AWS CloudFormation Designer es parte de la consola de AWS CloudFormation; para utilizar la herramienta, debe iniciar sesión con las credenciales de AWS. Para utilizar AWS CloudFormation Designer, vaya a: https://console.thinkwithwp.com/cloudformation/designer. A continuación, se indican casos que resaltan algunas de las características de AWS CloudFormation Designer.

Visualización de recursos de la plantilla
Analizar archivos de texto en formato JSON para comprender los recursos incluidos en la plantilla y las relaciones entre ellos puede ser difícil. Con AWS CloudFormation Designer, se puede abrir cualquier plantilla válida de AWS CloudFormation y la herramienta mostrará todos sus recursos en forma de diagrama. Esto permite ver fácilmente los recursos y sus conexiones sin leer el código JSON. Aun así, AWS CloudFormation Designer incluye un editor de texto JSON para poder ver los detalles de la plantilla si fuera necesario.

Creación más sencilla de plantillas
Trabajar con recursos de plantilla en un editor de texto implica modificar manualmente el código JSON, lo cual puede ser tedioso y dar lugar a errores. En AWS CloudFormation Designer, los recursos se manejan como en un diagrama. Puede arrastrar nuevos recursos para añadirlos a la plantilla y arrastrar conexiones entre recursos para establecer relaciones. AWS CloudFormation Designer se encarga de modificar automáticamente el código JSON. Además de mostrar los recursos, el editor de texto JSON integrado incluye una función para completar automáticamente los nombres de propiedad de los recursos. El uso de AWS CloudFormation Designer permite dedicar menos tiempo a codificar manualmente las plantillas y más al diseño de la infraestructura de AWS.

AWS CloudFormation ofrece un conjunto sencillo de API fáciles de utilizar y muy flexibles. Si desea obtener una lista completa de las API de AWS CloudFormation disponibles, consulte la Guía de referencia de API de AWS CloudFormation. A continuación se muestran algunas de las API más utilizadas y su funcionalidad:

  • CreateStack: inicia la creación de una pila nueva. Los parámetros de entrada de la llamada incluyen el nombre de la pila y un nombre de archivo (o URL de Amazon S3) de la plantilla fuente. Si el proceso de creación de la pila se realiza de forma satisfactoria, la pila tendrá el estado CREATE_COMPLETE. Si falla la creación de la pila, AWS CloudFormation elimina los recursos que se hayan creado con anterioridad, salvo que el usuario haya especificado un indicador para que se conserven estos elementos a efectos de depuración.
  • ListStacks: enumera todas las pilas de la cuenta. Puede utilizar esta opción para ver el conjunto de pilas y su estado actual. Por ejemplo, si la pila se está creando o actualizando.
  • DescribeStackResources: enumera todos los identificadores y nombres de recursos de AWS que se han creado como parte del proceso de creación de una pila. Además de ofrecerle información a usted, una aplicación compatible con AWS CloudFormation puede utilizar esta llamada para comprender su entorno.
  • DescribeStackEvents: enumera todas las operaciones y los eventos generados por AWS CloudFormation para una pila, con objeto de que usted pueda ver el progreso de las operaciones de creación o eliminación.
  • UpdateStack: inicia el proceso de actualización de una pila existente. Los parámetros de entrada de la llamada incluyen el nombre de la pila y un nombre de archivo (o URL de Amazon S3) de la plantilla actualizada. Si el proceso de actualización de la pila se realiza de forma satisfactoria, la pila tendrá el estado UPDATE_COMPLETE. Si falla la actualización de la pila, AWS CloudFormation restaura los cambios que se hayan realizado en los recursos para que la pila vuelva a estar en el estado descrito en la plantilla original.

AWS CloudFormation también se puede utilizar mediante los AWS SDK y la CLI de AWS.

AWS CloudFormation se integra con Amazon Simple Notification Service (Amazon SNS), lo que permite recibir notificaciones a medida que se realizan las operaciones de creación y eliminación de la pila. Además de ofrecerle el estado de las operaciones, también permite que otros programas estén al tanto de los eventos que suceden dentro de CloudFormation y puedan responder o incluso participar en el proceso de configuración de la pila.

La plantilla de AWS CloudFormation está diseñada para aprovechar la experiencia que haya adquirido usted con AWS. Cada recurso tiene un conjunto de parámetros con nombres idénticos a los nombres que se utilizan para crear los recursos a través de su API nativa. El snippet de la siguiente plantilla muestra cómo se define un volumen de Amazon EBS. El nombre lógico del volumen de la plantilla es "myVolume" y el tipo es "AWS::EC2::Volume". Las propiedades le resultarán muy familiares si utilizó volúmenes de EBS con anterioridad.

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}

AWS CloudFormation ofrece un número de scripts de ayudante que se pueden implementar en sus instancias EC2. Estos scripts proporcionan una forma simple de leer metadatos de recursos de la pila y utilizarlos para configurar su aplicación, implementar paquetes y archivos en su instancia que aparezcan en su plantilla y reaccionar a las actualizaciones de la pila como, por ejemplo, en caso de cambios en la configuración o actualizaciones de la aplicación.

Se encuentran disponibles los siguientes scripts:

  • cfn-get-metadata: recupere metadatos adjuntos a los recursos de la plantilla.
  • cfn-init: descargue e instale paquetes y archivos descritos en la plantilla.
  • cfn-signal: indique al flujo de trabajo de creación de la pila que su aplicación está en funcionamiento y lista para incorporar tráfico.
  • cfn-hup: un demonio para escuchar las actualizaciones de pila que se iniciaron a través de la consola de AWS, las herramientas de línea de comandos o el API directamente y ejecutar los ganchos específicos de su aplicación para reaccionar frente a estos cambios.

Puede utilizar los scripts de CloudFormation de forma independiente o en combinación con CloudInit, una característica disponible en la AMI de Amazon Linux y en algunas otras AMI de Linux. Para obtener más detalles sobre cómo arrancar aplicaciones y actualizar la configuración, consulte los recursos para desarrolladores de AWS CloudFormation. 

El uso que realice de este servicio está sujeto al Contrato de cliente de Amazon Web Services.