2012-05-16 15 views
7

Ho recentemente iniziato a utilizzare la gemma aws in un'applicazione web Sinatra il cui scopo è quello di fornire un frontend personalizzato alla gestione delle istanze (integrazione di strumenti non AWS). Attualmente sto lavorando sul modulo per consentire a un utente di impostare tutte le opzioni che potrebbero aver bisogno di impostazione, e una di queste opzioni è il tipo di istanza (m1.small, c1.medium, ecc.).Ruby AWS - Genera automaticamente un elenco di tipi di istanze AWS disponibili

Quello che mi piacerebbe è essere in grado di raggiungere una fonte per estrarre un elenco di tipi disponibili. Ho esaminato la documentazione di AWS :: EC2 e non ho trovato nulla che corrisponda a questa descrizione. Non ho bisogno di insistere sul fatto che una soluzione faccia parte della gemma aws, ma ancora meglio se lo è, perché è lo strumento che sto già utilizzando.

Sei a conoscenza di un modo per raccogliere queste informazioni a livello di programmazione?

risposta

6

Per quanto posso dire questo non è possibile. Se fosse possibile, Amazon elencerebbe la chiamata API in their documentation.

Trovo che l'omissione sia un po 'strana considerando che ho ottenuto l'elenco di quasi tutto il resto.

Si potrebbe forse kludge tramite il DescribeReservedInstancesOfferings chiamata, che elenca tutti i tipi di istanze riservate si possono acquistare - avrei pensato che l'estrazione delle istanze tipi unici che sarebbe una ragionevole approssimazione (per quanto ne so non ci sono tipi di istanze per cui non è possibile ottenere istanze riservate). Non sembra che la gemma aws lo supporti però. Il official amazon sdk fa, come fa fog

+0

Ho pensato che questo sarebbe il caso. Immagino di volere solo la conferma di qualcuno. Probabilmente finirò con l'hard-coding di un elenco per la mia applicazione, dal momento che probabilmente c'è un numero fisso di cui gli utenti avranno effettivamente bisogno. – asfallows

2

Ecco un po 'kludgy work-around per il fatto che non Amazon ancora rilasciato un'API per enumerare i tipi di istanza:

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 
Problemi correlati