2012-05-16 21 views
7

Ich habe vor kurzem begonnen, die aws Edelstein in einer Sinatra-Web-Anwendung, deren Zweck ist es, ein maßgeschneidertes Frontend für das Instanz-Management (Integration von Nicht-AWS-Tools) zu bieten. Ich arbeite gerade an dem Formular, um einem Benutzer zu ermöglichen, alle Optionen einzustellen, die möglicherweise Einstellung benötigen, und eine dieser Optionen ist Instanztyp (m1.small, c1.medium, usw.).Ruby AWS - Programmatisch Liste der verfügbaren AWS-Instance-Typen generieren

Was ich möchte, ist in der Lage, zu einer Quelle zu erreichen, um eine Liste der verfügbaren Typen zu ziehen. Ich habe die AWS :: EC2-Dokumentation durchgelesen und nichts gefunden, was dieser Beschreibung entspricht. Ich muss nicht darauf bestehen, dass eine Lösung Teil des aws Edelsteins ist, aber noch besser, wenn es das ist, denn das ist das Werkzeug, das ich bereits verwende.

Wissen Sie, wie Sie diese Informationen programmatisch erfassen können?

Antwort

6

Soweit ich das sagen kann, ist das nicht möglich. Wenn es möglich wäre, würde Amazon den API Anruf in their documentation auflisten.

Ich finde die Auslassung ein wenig seltsam, wenn man bedenkt, dass es Apis gibt, um so ziemlich alles andere aufzulisten.

Sie könnten es vielleicht über den DescribeReservedInstancesOfferings Anruf kloppen, der alle Arten von reservierten Instanzen auflistet, die Sie kaufen können - ich hätte gedacht, dass das Extrahieren der eindeutigen Instanz-Typen aus dem eine vernünftige Annäherung wäre (soweit ich weiß Es gibt keine Instanztypen, für die Sie keine reservierten Instanzen erhalten können. Sieht nicht so aus wie der aws Edelstein es unterstützt. Die official amazon sdk tut, genau wie fog

+0

Ich dachte, dies der Fall sein würde. Ich glaube, ich wollte nur Bestätigung von jemandem. Ich werde wahrscheinlich am Ende nur eine Liste für meine Anwendung hart-kodieren, da es wahrscheinlich eine feste Zahl gibt, die seine Benutzer wirklich brauchen werden. – asfallows

2

Hier ist ein etwas kludgy Behelfslösung der Tatsache, dass Amazon noch keine API freigegeben Instanztypen aufzuzählen:

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 
Verwandte Themen