Laboratorio: actualizando y eliminando la stack
Clase 14 de 19 • Curso de Introducción a AWS: Redes, Gobernanza y Machine Learning
Contenido del curso
Clase 14 de 19 • Curso de Introducción a AWS: Redes, Gobernanza y Machine Learning
Contenido del curso
Diego A de la Cruz Rojas
Alfonso Andres Zapata Guzman
RAFAEL MORALES ALVARADO
Enrique Alexis Lopez Araujo
Ferney Alonso Gaviria Gómez
Cristhian Eduardo Ninanya Cerron
Ricardo Mazuera
Jhon Freddy Tavera Blandon
Mario Alexander Vargas Celis
Jhon Freddy Tavera Blandon
Andres Espejo
Heber Esteban Bermudez Gonzalez
JOSE MANRIQUE
Jeisson Espinosa
Victor Rodriguez
Kevin Parra Lopez
JOMAR ARLEY VEGA CARDONA
Wilbert J Galano Batista
ANDRES ALFONSO MIRA MEJIA
Jose Alejandro Pantoja Giraldo
Jannez Milson Urrego Quiroz
Jefferson Pacheco Suárez
KEVIN CAMILO BARRETO VARON
Felicitaciones a Enrique la calidad de este curso mejoro bastante en comparación del anterior, me gusto que en la practica al final hayamos borrado los stacks. En la version anterior de estos cursos de AWS habiamos creado instancias de EC2 las cuales por un rato fueron un dolor de cabeza ya que por una u otra razón no podia eliminarlas y si las paraba iniciaban solas de nuevo, al final me hicieron recargos a mi TDC. Es bueno aprender sobre computo en la nube pero con las medidas pertinentes.
A mi me paso igual con otro curso, por desconocimiento no desactive algo y luego me lo querian cobrar, pero como lna tarjeta era prepagada no pudieron y me restringieron la cuenta,. apele los dos cobros y me los quitaron ya que no habia nada dando carga de trabajo,. En este curso para eliminar los EC2 use el sentido comun y elimine los servicios en sentido inverso al orden en que los creamos.
~ Que tal Platzinauta, ya conectamos en LinkedIn? ~
¡Que estas esperando! Conectemos en
GitHub,Medium,Redes socialeso unete al mejor servidor deDiscordsobre Python y ciencia de datos en español.
Ojala todos los maestros tuvieran tu humildad
Gracias por ese mensaje, siempre 💪🏽
Veo algo curioso. Y es que AWS crea un bucket especificamente para guardar los .json que estamos subiendo. En mi caso, el nombre del bucket empieza con "cf-templates" (CloudFormation)
Es decir que, a la hora de borrar los diferentes buckets, habría que tener en cuenta este otro también
En un curso de Computer Vision usando GCP, vi que luego de terminar el laboratorio, el instructor recomendó apagar y borrar todo, incluso los buckets creados en Cloud Storage. Como buena práctica final, siempre darle una revisada el billing para no llevarse sorpresas.
Laboratorio: actualizando y eliminando la stack
💡 Si iniciaste a hacer todo con trasnformation, mantente haciendolo de la misma manera; puesto que tendrías muchos problemas si empiezas a borrar manualmente las cosas
.
Actualizar un stack
En nuestro stack le damos update
Reemplazamos el template, por el actualizado
Damos next, next y al final update stack después de validar los cambios. .
💡 Tener mucho cuidado con los espacios en el nombre de los recursos, ese typo te saca error cuando vayas a crear tu bucket con CloudFormation
AWSTemplateFormatVersion: '2010-09-09' Description: Plantilla actualizada de CloudFormation para lanzar una instancia de EC2 y un bucket de S3 Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: InstanceType: "t2.small" # Cambiado de t2.micro a t2.small ImageId: "ami-0abcdef1234567890" # Reemplaza con un ID de AMI válido para tu región KeyName: "my-key-pair" # Reemplaza con el nombre de tu par de llaves SecurityGroups: - Ref: MySecurityGroup MySecurityGroup: Type: "AWS::EC2::SecurityGroup" Properties: GroupDescription: "Permitir acceso SSH" SecurityGroupIngress: - IpProtocol: "tcp" FromPort: "22" ToPort: "22" CidrIp: "0.0.0.0/0" MyS3Bucket: Type: "AWS::S3::Bucket" Properties: BucketName: "my-unique-bucket-name-12345" # Asegúrate de que sea un nombre único a nivel mundial
Laboratorio: Actualizando y Eliminando una Stack en CloudFormation
En este laboratorio, aprenderás a actualizar y eliminar una Stack en AWS CloudFormation.
1. Crear la Stack Inicial
Si no tienes una Stack creada, sigue el laboratorio anterior para desplegar un Bucket de S3 con la siguiente plantilla (s3-bucket.yaml):
AWSTemplateFormatVersion: '2010-09-09' Resources: MyS3Bucket: Type: AWS::S3::Bucket Properties: BucketName: my-cloudformation-lab-bucket
Sigue los pasos mencionados en el laboratorio anterior para crear la Stack en AWS CloudFormation.
2. Actualizar la Stack
Vamos a modificar la Stack para agregar una política de acceso público restringido al Bucket de S3.
Paso 1: Crear una Nueva Versión de la Plantilla
Crea un nuevo archivo llamado s3-bucket-updated.yaml con el siguiente contenido:
AWSTemplateFormatVersion: '2010-09-09' Resources: MyS3Bucket: Type: AWS::S3::Bucket Properties: BucketName: my-cloudformation-lab-bucket PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true IgnorePublicAcls: true RestrictPublicBuckets: true
Paso 2: Aplicar la Actualización en AWS CloudFormation
MyFirstStack).s3-bucket-updated.yaml.📝 Nota: Si el cambio no se puede aplicar directamente, es posible que CloudFormation realice una recreación del recurso en lugar de una actualización.
3. Eliminar la Stack
Si deseas eliminar la infraestructura creada por la Stack, sigue estos pasos:
MyFirstStack).⏳ Espera unos minutos mientras AWS elimina todos los recursos.
Conclusión
✅ Aprendiste cómo: ✔️ Crear una Stack en CloudFormation. ✔️ Actualizar una Stack para modificar su configuración. ✔️ Eliminar una Stack para liberar recursos.
Este es un flujo básico, pero puedes seguir explorando con parámetros, salidas y dependencias en CloudFormation. 🚀
Actualizar una Pila
Actualizar una pila en CloudFormation te permite modificar los recursos existentes o añadir nuevos recursos sin tener que eliminar y recrear toda la pila. Para este ejemplo, vamos a modificar la plantilla para cambiar el tipo de instancia y añadir un bucket de S3.
Contenido de la Plantilla Actualizada (ec2-instance-updated.yaml)
```js
AWSTemplateFormatVersion: '2010-09-09' Description: Plantilla actualizada de CloudFormation para lanzar una instancia de EC2 y un bucket de S3
Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: InstanceType: "t2.small" # Cambiado de t2.micro a t2.small ImageId: "ami-0abcdef1234567890" # Reemplaza con un ID de AMI válido para tu región KeyName: "my-key-pair" # Reemplaza con el nombre de tu par de llaves SecurityGroups: - Ref: MySecurityGroup
MySecurityGroup: Type: "AWS::EC2::SecurityGroup" Properties: GroupDescription: "Permitir acceso SSH" SecurityGroupIngress: - IpProtocol: "tcp" FromPort: "22" ToPort: "22" CidrIp: "0.0.0.0/0"
MyS3Bucket: Type: "AWS::S3::Bucket" Properties: BucketName: "my-unique-bucket-name-12345" # Asegúrate de que sea un nombre único a nivel mundial
Cuando termines de usar los recursos, es importante eliminarlos para evitar costos innecesarios. 1. **Eliminar la Pila** * Vuelve a la consola de CloudFormation. * Selecciona `MyFirstStack`. * Haz clic en "Delete". * Confirma la eliminación. CloudFormation eliminará todos los recursos asociados con la pila, incluidos la instancia de EC2, el grupo de seguridad y el bucket de S3.
Ejemplo practico
Claro, en un entorno laboral, CloudFormation puede ser esencial para automatizar y gestionar la infraestructura en AWS. Imagina que necesitas desplegar una aplicación web compuesta por varios recursos en la nube de AWS, como una instancia EC2, un balanceador de carga de Elastic Load Balancing (ELB), un grupo de autoescalado, y una base de datos en Amazon RDS.
Para lograr esto con CloudFormation, crearías una plantilla de CloudFormation en formato JSON o YAML que describa todos estos recursos y sus configuraciones. Por ejemplo, para una instancia EC2, la plantilla podría verse así en formato YAML:
Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: ami-12345678 InstanceType: t2.micro SecurityGroups: - sg-12345678 KeyName: MyKeyPair
Para un balanceador de carga de ELB:
MyLoadBalancer: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP HealthCheck: Target: 'HTTP:80/' HealthyThreshold: '3' UnhealthyThreshold: '5' Interval: '30' Timeout: '5'
Y así sucesivamente para los otros recursos. Una vez que tengas esta plantilla, puedes desplegar todo el "stack" de recursos en AWS con un solo comando, ya sea utilizando la consola de AWS, la CLI de AWS o incluso integrándolo en tus flujos de trabajo de CI/CD.
El beneficio principal es que con CloudFormation puedes definir tu infraestructura como código, lo que permite una gestión más fácil, repetible y controlada de los recursos de AWS. Además, si necesitas escalar o modificar tu infraestructura, puedes actualizar la plantilla y CloudFormation se encargará de aplicar esos cambios de manera controlada y coherente en tu entorno.
No me aparece habilitada la opción de Update después de crear el bucket.
recuerda seguir esta ruta:
Información resumida de esta clase #EstudiantesDePlatzi
Se crean archivos UpdateStack.json para actualizar los Stacks
Cuando subimos los archivos para actualizar los stacks, AWS me muestra los cambios que se van a realizar
Una de las buenas practicas cuando usamos CloudFormation es que si iniciamos creando toda nuestra estructura con estos archivos, debemos siempre hacer los cambios con estos archivos y no manualmente dentro de los servicios
No podemos cargar archivos Json con errores de tipografía
Algunos servicios de AWS solo permite tener nombres únicos en sus componentes
Los Stacks se pueden borrar fácilmente y junto con ellos todos los componentes que creamos
Se borran los Stacks y se borra la estructura creada con ellos
Pensé que esta esta clase se iba a mencionar pero no. Cuando se ejecutó el stack por primera vez se creo junto al bucket de platzilab uno adiciona que cf-templates-.... Esto porque y para que ?
Almacena los JSONs que nosotros estamos subiendo
Hola, como borra un recursos desde la plantilla o como borra stack sin darle borrar , que sea desde la plantilla?
Buenas eliminar recursos desde la plantilla solo debes modificar y actualizar con los recursos ya eliminados en cuanto eliminar un stack directo desde el código de la plantilla no es posible de manera explicita, si lo que deseas es no hacerlo desde la consola de aws puedes utilizar el AWS CLI o con una SDK ejemplo boto3(python)
✅
Muy interesante el uso de Json para crear los Resources de manera inmediata
borrados
Así mismo les generará error si crean un bucket con inicial mayúscula. Jjejejej me pasó y si no es porque leo el status reason, me hubiese vuelto chango.
Hola, les dejo un enlace donde pueden complementar las definiciones de Templñate y Stack.
Enlace Pragma