💸Ahorra en tus cuentas de AWS. usa 💥aws-nuke💥 para limpiar recursos.💸
Tags: awtwins, aws, community, accounts
Published: 2024-05-22 06:56:44

Sí, lo sabemos, estos últimos meses hemos estado desaparecidos, pero con razón: ¡estábamos preparándonos para la certificación de AWS! ¡Y la aprobamos los dos a la primera! 🎉

Aunque no hemos estado completamente fuera del radar. Tenemos un montón de temas interesantes que queremos compartir con vosotros, y, claro, ¡nos veremos en el AWS Summit Madrid como todos los años! 🫵

Hemos estado en un montón de proyectos donde, ya sea por requisitos específicos o simplemente para seguir buenas prácticas de despliegue, siempre hacemos la PoC en la cuenta de PoC. Después, pasamos a dev, test, pre... y así seguimos el ritual de las cuentas.

El problema es que, muchas veces, nos olvidamos de eliminar los recursos en esas cuentas. ¿Y qué pasa después? ¡Exacto! Nos llega la factura y nos da un infarto al ver el palazo que nos meten. 💸😂

Para intentar no morir en el acto, podemos usar AWS-NUKE:

[AWS-NUKE](https://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-deletion-of-aws-resources-by-using-aws-nuke.html)

[REPO](https://github.com/aws-samples/aws-nuke-account-cleanser-example/tree/main)

Es cierto que podríamos descargar el binario directamente y ejecutarlo desde donde queramos, pero ya sabes, no somos muy de andar ejecutando cosas en local. Preferimos la opción mencionada arriba. Con un toque de CloudFormation, ¡voilà! Listo para hacer limpieza en AWS.

Como se puede ver en el repositorio, tenemos un ficherito llamado nuke-cfn-stack.yaml, el cual nos ayudará en nuestro despliegue. Así que, IDE en mano, ¡a darle caña! 📒 (Siento que salgan palabras con subrayado, pero, dados los mil plugins que tengo en este portátil, se me van subrayando).

⏳ Indicaremos en el CRON la hora a la que queremos que se ejecute nuestra limpieza. ⏳

![CRON](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4k7fytgs9kffxngn6olq.png)

📩 Indicaremos un e-mail al que queremos que nos lleguen las notificaciones, tanto de errores como de alegrías. 📩

![E-MAIL](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h2o80x00ids25aphh2vl.png)

Ahora, en este apartado, vamos a marcar las regiones que queremos "nukear". Sí, has oído bien, ¡"nukear" es la palabra! Así que selecciona tus regiones con cuidado, no te vayas a cargar lo que necesitas.

![REGIONES](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2yzsj3gsnfac14lekgg9.png)
****

🚀 Una vez hayamos ajustado todo a nuestro gusto, es hora de desplegar la plantilla de CloudFormation. 🚀

![Deploy_1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vkcbxqncr9wt4l4ocbz2.png)

![Deploy_2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2l5v2556pj83z3645hw8.png)

¡Eh, 🚨🚨! Como podemos ver en la última imagen, siempre lanzamos el AWS-NUKE en modo DRY. ¿Por qué? Porque así evitamos cualquier desastre estilo "eliminar sin retorno". Pero, hey, a veces queremos ir al modo hardcore (como en esta PoC, que queremos testear que elimine cosas), entonces pondremos el valor a FALSE.

Una vez desplegado nuestro stack de CloudFormation, podremos ver un nuevo bucket S3. Por lo que toca subir los dos ficheros que se encuentran en el directorio config.

[Config](https://github.com/aws-samples/aws-nuke-account-cleanser-example/tree/main/config)

¿Qué podemos hacer con ellos? Bueno, básicamente, ¡añadir restricciones o permitir lo que queramos!

En nuestro caso, hemos generado dos buckets, uno de ellos con un nombre totalmente RANDOM, el cual buscamos que sea destruido, y otro de ellos con el nombre bucket-no-nuke-alex, el cual queremos que no se destruya nunca. Por tanto, editamos los ficheros indicando nuestras necesidades.

![Account-Blocklist](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jf1qyhmuwypl5w0d04j.png)

![Bucket](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vk2eo8tdk4z771h6f3uh.png)

Una vez modificados los ficheros, los subimos al bucket S3 y tocará esperar los resultados.

![no_nuke](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n08e2i6n7k7h9wkqdsao.png)

![Eliminado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oimmosw2gwlo63zevexe.png)

Y así llegamos al final de nuestra aventura con AWS-NUKE. Después de desplegar todo y hacer nuestras configuraciones, vemos los resultados: el bucket con la restricción sigue en pie, mientras que el que no tenía protección ha sido eliminado sin piedad. 🎯

👋 Como siempre, esperamos recibir comentarios, issues y sugerencias para seguir mejorando! 🫵 Si nos véis por Madrid, ¡decidnos algo!