2013-03-25 20 views
33

我剛開始探索亞馬遜EC2。我想聽聽一些解釋,或者可能是一些簡單的例子,說明如何以及爲什麼需要在amazon ec2中「保留」。我使用python框架boto來管理亞馬遜服務。到目前爲止我真的不明白爲什麼我們爲了這個額外的步驟任何理由來讓你的情況下,例如:亞馬遜EC2中「預訂」的目的是什麼

reservations = ec2.get_all_instances() 
instances = [instance for res in reservations for instance in res.instances] 

這就是我如何得到我的所有實例,有些時候我不喜歡這樣:

reservation = ec2.run_instances(image_id, min_count, max_count, key_name .....) 
instance = reservation.instances[0] 

而且比我用這些實例附加捲,添加標籤,添加安全組等等....但是,什麼是boto.ec2.instance.Reservation目的(我不要求的只有約博託框架,當然它的首選,但在亞馬遜EC2的這一整體意義)

>>> reservation = reservations[0] 
>>> reservation 
Reservation:r-74d11509 
>>> dir(reservation) 
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'connection', 'endElement', 'groups', 'id', 'instances', 'item', 'owner_id', 'region', 'startElement', 'stop_all'] 
>>> reservation.__class__ 
<class 'boto.ec2.instance.Reservation'> 

我找不到任何有用的方法。請解釋我爲什麼需要這個?它在那裏的原因是什麼?你會在什麼情況下使用它?

+1

你也可以試試'help(reservation)'。 – cyroxx 2013-03-25 15:42:13

+0

@cyroxx謝謝你指點我非常有用的命令,但是,我仍然沒有看到我的問題的答案。 – Vor 2013-03-25 15:47:56

回答

31

從我的理解,保留是行爲的啓動實例。基本上,保留是你,而一個實例是你得到。如果您通過run_instances()從一個圖像啓動多個實例,則進行一次預留,但獲取多個實例。

run_instances連同Reservation.stop_all()允許您運行一堆實例,等待它們完成任務,然後立即停止它們。

+1

這是不正確的,並不是正確的答案。預留實例與按需實例類似,允許您支付20美元/年與8美元/月的公司。預留實例意味着你已經鎖定了價格,但是你預先支付了錢以確保這個價格。按需就是點播。 – 2013-08-03 05:16:35

+16

@RyanParman:看看你的個人資料我猜你知道你在說什麼,但是......你確定你沒有把「保留的實例」和「ReservationInfoType」API響應混淆在一起,也就是boto.ec2.instance。 Reservation'? – georg 2013-08-03 11:05:56

+0

好點;我可能是。由於米奇(boto的作者)在AWS工作,我會詢問[官方論壇](https://forums.aws.amazon.com/forum.jspa?forumID=132)。除此之外,你可以在GitHub上[提出問題](https://github.com/boto/boto)。再說一次,如果我犯了@ thg435說我可能有的錯誤,那麼他很可能是對的。我的錯。 :o – 2013-08-03 21:24:10

10

boto docs

的保留對應於一個命令來啓動實例。你可以看到 什麼實例與一個預約相關:

>>> instances = reservations[0].instances 
>>> instances 
[Instance:i-00000000] 
4

這是Ryan Parman & Rose Perrone一個有趣的線索和意見 - 我可能會問米奇關於在重新史:今年晚些時候發明(2015年),但如果你做任何正常排序的aws ec2 describe-instances(或博託,軟件開發工具包,等同等學歷),你會看到所有實例列舉在一些一般意義上的「保留」:

{ 
    "Reservations": [ 
     { 
      "OwnerId": "123456789012", 
      "ReservationId": "r-9aa12345", 
      "Groups": [], 
      "Instances": [ 

內的數據是一個值爲r-12345bc8的價值類型的,但其中沒有對應於您爲鎖定較低費率(計費便利性,而不是實際啓動的實例類型)所支付的預留費用。所以我的預感是,當他們第一次創建系統時,這是一個有趣的小余留 - 每個實例都需要「預留」一個插槽來運行。後來他們才提出了一個使用相同術語的定價模式。

但是,這只是一個猜測。

看起來這裏顯然存在這個詞的兩個含義的重疊,看起來並不相互關聯。