Encontre o AZ mais barato para solicitar sua instância spot

Às vezes, você precisa executar uma instância na AWS e não se importa onde ela mora. Aqui está um snippet de código ruby ​​para encontrar a zona de disponibilidade onde um tipo de instância é atualmente o mais barato.

ec2 = AWS::EC2.new
regions
= ec2.regions.map(&:name)

spot_prices
= []
regions
.each do |region|
ec2
= AWS::EC2.new(region: region)
spot_price
= ec2.client.describe_spot_price_history({instance_types: ['m3.medium'], product_descriptions: ['Linux/UNIX'], start_time: (Time.now - 1).iso8601(3), end_time: Time.now.iso8601(3)})
spot_price
[:spot_price_history_set].each do |sp|
spot_prices
<< sp.merge({region: region})
end
end

min_spot_price
= spot_prices.min_by{|sp| sp[:spot_price].to_f}

puts
"#{min_spot_price[:instance_type]} has lowest price on #{min_spot_price[:region]} #{min_spot_price[:availability_zone]} at $#{min_spot_price[:spot_price]}"

Sobre os parâmetros de describe_spot_price_history

instance_types: matriz de tipos de instância para recuperar o histórico de preços

product_descriptions: array de sistema operacional para recuperar

start_timee end_time: período de tempo do histórico de preços. Usamos 1 segundo para obter apenas o preço mais recente

Isso pode ser personalizado se sua instância precisa residir em uma região específica ou se você deseja ser capaz de oferecer suporte a vários tipos de instância.
Em seguida, você pode facilmente solicitar sua instância local usando este snippet de código https://coderwall.com/p/iw4pfw