Laboratorio: empezando con CloudFormation

Clase 13 de 19Curso de Introducción a AWS: Redes, Gobernanza y Machine Learning

Resumen

CloudFormation nos permite provisionar infraestructura como código. Para poner a prueba CloudFormation, mediante una plantilla vamos a crear un stack a partir del cual se desplegará un bucket de S3. Luego, actualizaremos el stack añadiendo otro bucket de S3, y finalmente lo eliminaremos.
Diagrama de stack de CloudFormation

Entendiendo la plantilla

En este repositorio encontrarás la plantilla de CloudFormation que usaremos. La plantilla tiene la siguiente estructura JSON (recuerda, CloudFormation acepta formato JSON o YAML):

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "this template does XXXX",
  "Metadata": {},
  "Parameters": {},
  "Mappings": {},
  "Conditions": {},
  "Transform": {},
  "Resources": {},
  "Outputs": {}
}

Estos parámetros corresponden a lo siguiente:

  • AWSTemplateFormatVersion: este parámetro es opcional. Aquí especificamos la versión de la plantilla
  • Description: cadena de texto que describe la plantilla. Debe ir después de AWSTemplateFormatVersion
  • Metadata: objetos que proporcionan información adicional sobre la plantilla
  • Parameters: valores que pasaremos a la plantilla al ejecutarse, ya sea durante la creación o actualización del *stack
  • Mappings: permite asignar un conjunto de valores a una clave específica. Por ejemplo, para establecer valores en función de una región, podemos crear un mapping que usa el nombre de una región como clave y contiene los valores que deseemos especificar para cada región
  • Conditions: controla que se creen recursos o se asignen valores a dichos recursos en función de una condición. Por ejemplo, podemos asignar valores distintos para entornos de producción o de prueba
  • Transform: especifica las macros que AWS CloudFormation usa para procesar la plantilla
  • Resources: aquí se declaran los recursos a incluir en el stack. Por ejemplo, instancias EC2 o buckets de S3.
  • Outputs: declara valores de salida que pueden ser usados en otros stacks

Pasos para crear el stack

  1. Nos dirigimos a la página de CloudFormation desde nuestra cuenta de AWS (en esta página podremos conocer más sobre el servicio en cuestión).
  2. Aquí le damos a “Crear stack”.
  3. Para crear el stack, en “Especificar plantilla” seleccionamos “Cargar un archivo de plantilla”, y cargamos el archivo createstack.json. Este archivo simplemente define un bucket de S3 llamado “platzilab”.
{
  "Resources": {
    "platzilab": {
      "Type": "AWS::S3::Bucket"
    }
  }
}

Subir plantilla
4. Le damos clic a siguiente y, a continuación, escogemos un nombre para el stack o pila. En este caso, la llamamos cfnlab, y le damos a siguiente.
5. Opcionalmente, podemos añadir etiquetas para identificar la pila, y un rol de IAM.
6. Dejamos el resto de configuraciones por defecto y le damos a siguiente. Entonces nos llevará a revisar las configuraciones, y le damos a “Crear pila”.
7. Podremos ver el proceso de creación de la pila, los eventos y los recursos que fueron creados. Si te fijas en el nombre del bucket creado, verás que este está compuesto por el nombre de la pila, el nombre que le asignamos al bucket en la plantilla, y una cadena de texto aleatoria. Esto es para evitar crear recursos con nombre duplicados.

Pila y bucket creados

Contribución creada con aportes de: Ciro Villafraz.