2013-03-25 45 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的价值类型的,但其中没有对应于您为锁定较低费率(计费便利性,而不是实际启动的实例类型)所支付的预留费用。所以我的预感是,当他们第一次创建系统时,这是一个有趣的小余留 - 每个实例都需要“预留”一个插槽来运行。后来他们才提出了一个使用相同术语的定价模式。

但是,这只是一个猜测。

看起来这里显然存在这个词的两个含义的重叠,看起来并不相互关联。