Conheça o spotinfo: uma ferramenta de linha de comando open source e fácil de usar para explorar instâncias spot do AWS EC2 no terminal e aproveitar esses dados em scripts e automações.

Explore instâncias AWS Spot direto da linha de comando
TL;DR
O spotinfo é uma ferramenta de linha de comando para explorar instâncias AWS Spot em várias regiões da AWS.
Introdução
Usar instâncias Amazon EC2 Spot é uma ótima forma de reduzir o custo de instâncias EC2 on-demand em até 90%. Sempre que você tem um workload que aguenta uma interrupção da VM ou pode ser pausado e retomado depois sem afetar o negócio, escolher o modelo de preços Spot é uma decisão sem mistério.
Quanto menor a taxa de interrupção, maior a chance de suas instâncias Spot rodarem por mais tempo.
A Amazon oferece uma excelente interface web, o AWS Spot Instance Advisor, para explorar as instâncias Spot disponíveis e identificar pools com a menor chance de interrupção. Você também pode conferir a economia em relação às tarifas on-demand. Você também pode conferir a economia em relação às tarifas on-demand. E, a partir daí, a ideia é usar essas métricas para escolher as instâncias Spot mais adequadas.
Apesar de ser uma ferramenta valiosa, o AWS Spot Instance Advisor não facilita o uso desses dados em scripts e automações, e alguns casos de uso exigem cliques demais.
A ferramenta spotinfo
Foi por isso que criei o spotinfo. É uma ferramenta de linha de comando fácil de usar (open source sob a Licença Apache 2.0) que permite explorar instâncias AWS Spot no terminal e aproveitar esses dados em scripts e automações.
Por baixo dos panos, o spotinfo consome duas fontes públicas de dados da AWS:
Recursos
O spotinfo dá acesso às mesmas informações que você vê no AWS Spot Instance Advisor, só que pela linha de comando — e pode ser usado em casos de scripting e automação. Além disso, a ferramenta traz alguns recursos úteis que não existem na interface web do AWS Spot Instance Advisor.
Filtragem avançada
O primeiro recurso é a filtragem avançada. Dá para filtrar instâncias spot por:
- vCPU — número mínimo de núcleos de CPU
- Memória GiB — tamanho mínimo de memória
- Sistema operacional — Linux ou Windows
- Região — uma ou mais regiões da AWS (ou
allpara todas as regiões) - Economia (em comparação ao on-demand)
- Frequência de interrupção
- Tarifa por hora (em
USD/hour)
Ao filtrar por tipo de instância, há suporte a expressões regulares. Isso ajuda a montar consultas avançadas.
Exemplo: filtrar com Regex
Listar (em texto) todas as instâncias EC2 Spot disponíveis com processador Graviton2, com no mínimo oito núcleos de CPU, na região us-west-2 (Oregon), ordenando os resultados pelo preço spot.
https://gist.github.com/9a22c748a6697c58a555702b709205b9
Visibilidade do preço Spot
No AWS Spot Instance Advisor, você consegue ver o desconto em relação à tarifa on-demand da instância EC2. Mas, para descobrir o preço efetivo que vai pagar, precisa acessar outra página, a de AWS Spot pricing, e fazer uma nova busca pelo tipo de instância.
O spotinfo economiza esse tempo e exibe o preço spot junto com as demais informações. Se quiser, você também pode filtrar e ordenar pelo preço spot.
Formatos de saída flexíveis
Trabalhar com dados na linha de comando e consumi-los em scripts e automações exige flexibilidade no formato de saída. O spotinfo retorna resultados em vários formatos: amigáveis para humanos, como table e text simples, e voltados à automação, como json, csv ou apenas o número da economia. Escolha o formato que faz mais sentido para cada caso.
Compare Spots em várias regiões
Uma chatice do AWS Spot Instance Advisor é não dar para comparar instâncias spot do EC2 entre várias regiões da AWS. Só existe a visualização de uma única região por vez — ou você abre várias abas no navegador e fica alternando entre elas para comparar instâncias spot em regiões diferentes.
O spotinfo resolve isso e ajuda a comparar instâncias spot em várias regiões da AWS. Basta passar a flag --region na linha de comando — e você pode usá-la mais de uma vez.
Outra opção é passar o valor especial all (com a flag --region=all) para ver as instâncias spot em todas as regiões da AWS disponíveis.
Exemplo: explorar a instância Spot t4g.small
Explore a disponibilidade e a tarifa do tipo de instância spot t4g.small em todas as regiões da AWS onde esse tipo está disponível.
https://gist.github.com/2b7a92a6126f21edac2319cd1507c352
Resiliência de rede
Apesar de usar os data feeds públicos da AWS, o spotinfo também traz esses mesmos dados embutidos na própria ferramenta. Assim, se o data feed estiver indisponível por qualquer motivo (falta de conectividade, serviço fora do ar etc.), o spotinfo continua entregando o mesmo resultado.
Conclusão
Espero que o spotinfo seja uma mão na roda para explorar instâncias spot do AWS EC2. Fico no aguardo dos seus comentários e de qualquer dúvida que aparecer.
Fica o convite para contribuir (issues, features, pull requests) com o projeto alexei-led/spotinfo no GitHub.
p.s.: se você curtiu o spotinfo, considere dar uma ⭐️ no projeto no GitHub.
Obrigado pela leitura! Para ficar por dentro, acompanhe a gente no DoiT Engineering Blog , no canal da DoiT no LinkedIn e no canal da DoiT no Twitter . Para conhecer oportunidades de carreira, acesse https://careers.doit.com .