2012-05-16 10 views
7

Niedawno zacząłem używać klejnotu aws w aplikacji internetowej Sinatra, której celem jest zapewnienie niestandardowego interfejsu do zarządzania instancjami (integracja narzędzi innych niż AWS). Obecnie pracuję nad formularzem, aby umożliwić użytkownikowi ustawienie wszystkich opcji, które mogą wymagać ustawienia, a jedną z tych opcji jest typ instancji (m1.small, c1.medium, itp.).Ruby AWS - Programowo generuj listę dostępnych typów instancji AWS

Co chciałbym to, aby móc dotrzeć do jakiegoś źródła ciągnąć listę dostępnych typów. Przejrzałem dokumentację AWS :: EC2 i nie znalazłem niczego pasującego do tego opisu. Nie muszę nalegać, aby rozwiązanie było częścią klejnotu aws, ale jeszcze lepiej, ponieważ jest to narzędzie, z którego już korzystam.

Czy znasz sposób, aby zebrać te informacje programowo?

Odpowiedz

6

O ile mogę powiedzieć, to nie jest możliwe. Gdyby było to możliwe, amazon wyświetliłby wywołanie api w their documentation.

znajdę pominięcie trochę dziwne zważywszy the've dostał API do listy prawie niczego innego.

Można może kludge go poprzez rozmowy DescribeReservedInstancesOfferings, która zawiera wszystkie rodzaje zastrzeżonych przypadkach można kupić - Myślałem, że wydobycie niepowtarzalnych instancji typów z byłoby rozsądne przybliżenie (o ile wiem, nie ma typów instancji, dla których nie można uzyskać zarezerwowanych instancji). Nie wygląda jednak na to, że klejnot aws go obsługuje. official amazon sdk robi, jak robi fog

+0

wyobraziłem to byłoby inaczej. Chyba po prostu chciałem potwierdzenia od kogoś. Prawdopodobnie skończy się po prostu na sztywne kodowanie listy dla mojej aplikacji, ponieważ prawdopodobnie jest tam ustalona liczba, której jej użytkownicy będą potrzebować. – asfallows

2

Oto nieco kludgy obejście na fakt, że wciąż nie Amazon uwolnionego API wyliczyć typy przykład:

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 
Powiązane problemy