2012-05-16 1 views
7

Gần đây tôi đã bắt đầu sử dụng đá quý aws trong ứng dụng web Sinatra với mục đích cung cấp giao diện tùy chỉnh cho quản lý mẫu (tích hợp các công cụ không AWS). Tôi hiện đang làm việc trên biểu mẫu để cho phép người dùng thiết lập tất cả các tùy chọn có thể cần thiết lập, và một trong các tùy chọn đó là kiểu cá thể (m1.small, c1.medium, v.v.).Ruby AWS - Tạo lập trình danh sách các loại cá thể AWS có sẵn

Điều tôi muốn là có thể liên hệ với một số nguồn để lấy danh sách các loại có sẵn. Tôi đã xem qua tài liệu AWS :: EC2 và không tìm thấy bất kỳ điều gì phù hợp với mô tả này. Tôi đã không cần phải nhấn mạnh rằng một giải pháp là một phần của đá quý aws, nhưng thậm chí tốt hơn nếu nó là, bởi vì đó là công cụ tôi đã sử dụng.

Bạn có biết cách thu thập thông tin này theo chương trình không?

Trả lời

6

Theo như tôi có thể nói điều này là không thể. Nếu có thể, amazon sẽ liệt kê cuộc gọi api theo số their documentation.

Tôi tìm thấy thiếu sót một chút lẻ khi xem xét đã có apis để liệt kê khá nhiều thứ khác.

Bạn có thể kludge thông qua cuộc gọi DescribeReservedInstancesOfferings, liệt kê tất cả các loại trường hợp đặt trước bạn có thể mua - tôi đã nghĩ rằng việc trích xuất các loại cá thể duy nhất từ ​​đó sẽ là một xấp xỉ hợp lý (theo như tôi biết không có loại cá thể nào mà bạn không thể nhận được các cá thể được bảo lưu). Không giống như đá quý aws hỗ trợ nó mặc dù. Các official amazon sdk làm, cũng như fog

+0

I figured này sẽ là trường hợp. Tôi đoán tôi chỉ muốn xác nhận từ một người nào đó. Tôi có thể sẽ chỉ cần lập một danh sách cứng cho ứng dụng của tôi, vì có thể một số cố định mà người dùng của nó thực sự cần. – asfallows

2

Dưới đây là một phần nào kludgy công việc xung quanh thực tế rằng Amazon vẫn chưa phát hành một API để liệt kê các loại Ví dụ:

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