К сожалению, похоже, что нет прямого модуля aws-sdk
, который можно было бы использовать для доступа к ec2 и сокращения затрат во всех регионах.Однако, похоже, что API ценообразования AWS будет самым близким решением, обеспечивающим затраты на оба ресурса во всех регионах AWS.
Более подробную информацию об API можно найти в этом сообщении: получить цену ec2 программно?
API создает файлы jsonp.Чтобы сделать это легко доступным в ruby, я бы порекомендовал взглянуть на этот пост, в котором используются примеры непосредственно из API ценообразования: Ruby: как анализировать jsonp и сохранять данные json в базу данных
Справедливое предупреждение, вам нужно будет тщательно проанализировать это, чтобы иметь возможность получить доступ к любой информации.Например, это решение предоставит хэш, содержащий данные о ценах для экземпляра t2.medium
в us-west-2
#!/usr/bin/env ruby
require 'net/http'
require 'json'
ec2_linux_price = JSON.parse(
Net::HTTP.get(
URI.parse('http://a0.awsstatic.com/pricing/1/ec2/linux-od.min.js')
).split('callback(')[1].sub(');', '').gsub(/(\w+):/, '"\1":')
)
region_prices = ec2_linux_price["config"]["regions"].select{|region|
region["region"]=="us-west-2"
}[0]["instanceTypes"].map{|types|
types["sizes"]
}
cost_hash={}
region_prices.each do |size_range|
cost = size_range.select{|size|
size["size"]==instance[:instance_type]
}[0]
unless cost.nil?
cost_hash["t2.medium"] = cost["valueColumns"][0]["prices"]["USD"]
end
end
p cost_hash