Ruby AWS - 以编程方式生成可用AWS实例类型的列表

时间:2012-05-16 19:08:12

标签: ruby amazon-ec2 amazon-web-services

我最近开始在Sinatra Web应用程序中使用aws gem,其目的是为实例管理提供定制的前端(集成非AWS工具)。我目前正在处理表单,允许用户设置可能需要设置的所有选项,其中一个选项是实例类型(m1.small,c1.medium等)。

我想要的是能够联系某些来源以提取可用类型列表。我查看了AWS :: EC2文档,但未找到符合此描述的任何内容。我没有必要坚持要求解决方案成为aws宝石的一部分,但如果是,那就更好了,因为这是我已经使用的工具。

您是否知道以编程方式收集此信息的方法?

2 个答案:

答案 0 :(得分:6)

据我所知,这是不可能的。如果可能的话,亚马逊会在their documentation中列出api电话。

我发现遗漏有点奇怪,因为我已经准备好列出其他任何东西了。

你可以通过DescribeReservedInstancesOfferings调用来解决它,它会列出你可以购买的所有类型的预留实例 - 我会认为从中提取唯一的实例类型是合理的近似值(目前为止)据我所知,没有实例类型,你不能得到保留实例)。看起来不像aws gem支持它。 official amazon sdkfog

一样

答案 1 :(得分:2)

在亚马逊尚未发布枚举实例类型的API的情况下,这是一个有点愚蠢的解决方法:

instance_types = Set.new()
response = {:next_token => ''}
loop do
    response = ec2.client.describe_spot_price_history(
        :start_time => (Time.now() - 86400).iso8601,
        :end_time => Time.now().iso8601,
        :product_descriptions => ['Linux/UNIX'],
        :availability_zone => 'us-east-1c',
        :next_token => response[:next_token]
    )

    response[:spot_price_history_set].each do |history_set|
        instance_types.add(history_set[:instance_type])
    end

    if(response[:next_token].nil?)
        break
    end
end