À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_time
e 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