Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Spotinfo — uma nova CLI para AWS Spot

By Alexei LedenevMay 13, 20214 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

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.

1 ujy37yrdtevs13lxufagyq

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:

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

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 all para 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 .