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

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

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

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

据我所知,这是不可能的。 如果可能的话,亚马逊会在他们的文档中列出api调用。

我发现这个遗漏有点奇怪,因为我已经得到了apis来列出其他任何东西。

您可以通过DescribeReservedInstancesOfferings调用来对其进行处理,该调用列出了您可以购买的所有类型的保留实例 – 我原本认为从中提取唯一的实例类型将是一个合理的近似值(据我所知,没有实例)您无法获得保留实例的类型)。 看起来不像aws gem支持它。 官方的亚马逊sdk和雾一样

亚马逊尚未发布枚举实例类型的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