AWS CloudFormation
Implantación de Aplicaciones Web
Curso 2023/2024
1 AWS CloudFormation
Nota: Este documento está incompleto porque todavía está en proceso de edición.
En esta práctica vamos a aprender a utilizar algunas de las funcionalidades básicas que ofrece el servicio AWS CloudFormation.
1.1 ¿Qué es AWS CloudFormation?
AWS CloudFormation es un servicio que nos permite automatizar la creación y gestión de recursos en AWS a partir de una plantilla.
Referencia:
1.2 Ventajas e inconvenientes
Algunas de las ventajas que nos ofrece este servicio son:
- Permite automatizar la creación de recursos, reduciendo así posibles errores en el proceso de creación de forma manual.
- Permite reutilizar plantillas para otros proyectos y configuraciones.
- Garantizamos que todos los entornos que creamos con las plantillas son idénticos.
- Permite tener una documentación de los recursos que creamos.
- Podemos utilizar un control de versiones para controlar los cambios que se realizan en las plantillas.
Algunos de los inconvenientes que podemos encontrar son:
- Es un servicio exclusivo de AWS, por lo que no podemos utilizarlo para crear recursos en otros proveedores de servicios en la nube.
- No están disponibles todos los servicios de AWS.
- Aunque AWS nos proporciona la herramienta AWS CloudFormation Designer para crear las plantillas, a veces puede ser un poco complicado describir la infraestructura que necesitamos.
1.3 ¿Qué es una plantilla de AWS CloudFormation?
La plantilla o template es un archivo JSON o YAML que describe los recursos y configuraciones que queremos crear en AWS.
1.4 ¿Qué es stack de AWS CloudFormation?
Un stack o una pila, es una colección de recursos de infraestructura que se crean a partir de una plantilla.
1.5 ¿Cómo funciona AWS CloudFormation?
Consultar la documentación oficial.
1.6 Gestión stacks desde la consola web de AWS CloudFormation
Consultar la documentación oficial.
1.7 Gestión de stacks desde la línea de comandos con AWS CLI
Consultar la documentación oficial.
1.7.1 Crear un stack
Para crear una pila de AWS CloudFormation desde la línea de comandos con AWS podemos ejecutar el siguiente comando:
aws cloudformation create-stack \
--stack-name <nombre_del_stack> \
--template-body file://<path-de-la_plantilla>
Donde <nombre_del_stack>
es el nombre que queremos
darle a la pila y <path-de-la_plantilla>
es la ruta
del archivo que contiene la plantilla.
Ejemplo:
aws cloudformation create-stack \
--stack-name ejemplo-01 \
--template-body file://ejemplo-01/ec2.yaml
Si la plantilla contiene parámetros, podemos especificarlos en la
línea de comandos con el parámetro --parameters
:
Ejemplo:
aws cloudformation create-stack \
--stack-name ejemplo-05 \
--template-body file://ejemplo-05/ec2.yaml \
--parameters ParameterKey=KeyName,ParameterValue=vockey \
\
ParameterKey=InstanceType,ParameterValue=t2.small ParameterKey=ImageId,ParameterValue=ami-08e637cea2f053dfa
1.7.2 Listado de stacks
Para obtener un listado información básica de los stacks, como el nombre, el estado actual y la fecha de creación, utilizamos el comando:
aws cloudformation list-stacks
Para obtener un listado con información más detallada, utilizamos el comando:
aws cloudformation describe-stacks
También podemos consultar información de un stack específico con el comando:
aws cloudformation describe-stacks --stack-name <nombre_stack>
1.7.3 Eliminar un stack
Para eliminar un stack y todos los recursos asociados, utilizamos el comando:
aws cloudformation delete-stack --stack-name <nombre_stack>
1.8 Fragmentos de plantillas
Consultar en la documentación oficial
1.9 Repositorio con plantillas de ejemplo
Los ejemplos que vamos a realizar en esta sesión están disponibles en el siguiente repositorio de GitHub.
1.10 Ejercicios
1.10.1 Ejercicio 1
Escriba una plantilla de AWS CloudFormation que cree la infraestructura necesaria para desplegar la aplicación web propuesta en la práctica 7.
1.10.2 Ejercicio 2
Escriba una plantilla de AWS CloudFormation que cree la infraestructura necesaria para desplegar la aplicación web propuesta en la práctica 9.
1.11 Referencias
2 Licencia
Esta
página forma parte del curso
Implantación de Aplicaciones
Web de José Juan Sánchez
Hernández y su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.