Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Spotinfo — un nuevo CLI para AWS Spot

By Alexei LedenevMay 13, 20214 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Te presentamos spotinfo, una herramienta de línea de comandos open source y fácil de usar para explorar instancias spot de AWS EC2 desde la terminal y aprovechar esos datos en tus scripts y automatizaciones.

1 ujy37yrdtevs13lxufagyq

Explora instancias AWS Spot desde la línea de comandos

TL;DR

spotinfo es una herramienta de línea de comandos que te permite explorar instancias AWS Spot en varias regiones de AWS.

Introducción

Usar instancias Amazon EC2 Spot es una excelente forma de reducir hasta en un 90% el costo de las instancias EC2 on-demand. Si tienes un workload que tolera la interrupción de una VM, o que se puede pausar y reanudar más tarde sin afectar al negocio, optar por el modelo Spot es una decisión obvia.

Mientras menor sea tu tasa de interrupción, más tiempo seguirán activas tus instancias Spot.

Amazon ofrece una excelente interfaz web, el AWS Spot Instance Advisor, para revisar las instancias Spot disponibles e identificar los pools con menor probabilidad de interrupción. También puedes ver cuánto se ahorra frente a los precios on-demand. La idea es que uses esas métricas para elegir las instancias Spot más adecuadas.

Si bien el AWS Spot Instance Advisor es una herramienta valiosa, no es nada cómodo aprovechar sus datos para scripts y automatización, y algunos casos de uso requieren demasiados clics.

La herramienta Spotinfo

Por eso creé spotinfo: una herramienta de línea de comandos fácil de usar (open source bajo licencia Apache 2.0) que te permite explorar instancias AWS Spot desde la terminal y usar esos datos en tus scripts y automatizaciones.

Por dentro, spotinfo se apoya en dos fuentes de datos públicas de AWS:

  1. AWS Spot Instance Advisor data feed
  2. AWS Spot Pricing data feed

Funcionalidades

Con spotinfo accedes a la misma información que ves en el AWS Spot Instance Advisor, pero desde la línea de comandos, lo que abre la puerta a casos de uso de scripting y automatización. Además, incorpora algunas funciones útiles que la interfaz web del AWS Spot Instance Advisor no ofrece.

Filtrado avanzado

La primera función es el filtrado avanzado. Puedes filtrar las instancias spot por:

  • vCPU — número mínimo de núcleos de CPU
  • Memoria GiB — tamaño mínimo de memoria
  • Sistema operativo — Linux o Windows
  • Región — una o más regiones de AWS (o all para todas las regiones)
  • Ahorro (frente a on-demand)
  • Frecuencia de interrupción
  • Precio por hora (en USD/hora)

Al filtrar por tipo de instancia se admiten expresiones regulares, lo que te permite armar consultas más avanzadas.

Ejemplo: filtrar con Regex

Lista (en texto plano) todas las instancias EC2 Spot disponibles con procesador Graviton2, con un mínimo de ocho núcleos de CPU, en la región us-west-2 (Oregon), ordenadas por precio spot.

https://gist.github.com/9a22c748a6697c58a555702b709205b9

Visibilidad del precio Spot

Con el AWS Spot Instance Advisor ves el descuento frente al precio de la instancia EC2 on-demand. Pero para conocer el precio real que vas a pagar tienes que ir a otra página, la de AWS Spot pricing, y buscar otra vez el tipo de instancia específico.

spotinfo te ahorra ese paso y muestra el precio spot junto con el resto de la información. Si lo prefieres, también puedes filtrar y ordenar por precio spot.

Formatos de salida flexibles

Trabajar con datos en la línea de comandos y consumirlos desde scripts y automatizaciones exige flexibilidad en el formato de salida. spotinfo entrega los resultados en varios formatos: pensados para humanos, como table y text plano, y pensados para automatización, como json, csv o simplemente un número de ahorro. Elige el que mejor se adapte a cada caso de uso.

Comparar instancias Spot entre varias regiones

Algo molesto del AWS Spot Instance Advisor es que no permite comparar instancias EC2 spot entre varias regiones de AWS. Solo se puede ver una región a la vez, o te toca abrir varias pestañas del navegador y andar cambiando entre ellas para comparar instancias spot entre regiones.

spotinfo sí te permite comparar instancias spot entre varias regiones de AWS. Solo tienes que pasar el flag --region en la línea de comandos, y puedes usarlo más de una vez.

Otra opción es pasar el valor especial all (con el flag --region=all) para ver las instancias spot en todas las regiones de AWS disponibles.

Ejemplo: explorar la instancia Spot t4g.small

Explora la disponibilidad y el precio del tipo de instancia spot t4g.small en todas las regiones de AWS donde esté disponible.

https://gist.github.com/2b7a92a6126f21edac2319cd1507c352

Resiliencia de red

Aunque spotinfo consume los data feeds públicos de AWS, también lleva esos mismos datos embebidos dentro de la propia herramienta. Así, si el data feed no está disponible por cualquier motivo (sin conectividad, servicio caído, etc.), spotinfo sigue devolviendo el mismo resultado.

Resumen

Ojalá spotinfo te resulte útil para explorar instancias spot de AWS EC2. Quedo atento a tus comentarios y a cualquier pregunta que tengas.

Te invito a contribuir (issues, features, pull requests) al proyecto de GitHub alexei-led/spotinfo.

p.d.: si te gusta spotinfo, considera darle una ⭐️ al proyecto en GitHub.


¡Gracias por leer! Para no perderte nada, síguenos en el DoiT Engineering Blog, en el canal de LinkedIn de DoiT y en el canal de Twitter de DoiT. Para conocer las oportunidades laborales, visita https://careers.doit.com.