什么是亚马逊EC2“预订”的宗旨(What is the purpose of 'Reser

2019-07-23 06:24发布

我刚开始探索的Amazon EC2。 我想听到一些解释,或者可以是如何以及为什么你需要在Amazon EC2上“保留”一些简短的例子。 我使用的Python框架boto管理亚马逊服务。 到目前为止我真的不明白为什么我们要为了这个额外的步骤,让您的实例,例如任何原因:

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'>

我找不到任何有用的方法。 请给我解释一下为什么我们需要这个? 什么是它是有什么原因呢? 在什么情况下,你会用吗?

Answer 1:

从我的理解,一个预订启动情况下的行为 。 基本上,预约是你了什么,而一个实例就是你得到的。 如果通过从一个图像推出多个实例run_instances()你做一个预约,但得到的多个实例。

run_instances连同Reservation.stop_all()允许你运行了一堆的实例,等待他们完成任务,然后停止他们的一次。



Answer 2:

从博托文档 :

的保留对应于一个命令来启动实例。 你可以看到实例与一个预约相关:

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


Answer 3:

这是一个有趣的线索和意见瑞安帕曼和罗斯佩罗 -请问米奇关于在重新史:创造今年晚些时候(2015年),但如果你做任何正常排序的aws ec2 describe-instances (或同等学历从博托,软件开发工具包,等等),你会看到所有实例列举在一些一般意义上的“保留”:

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

在这一数据是ReservationId一个的r-12345bc8值类型,但无处这是否对应于你付出的较低速率(计费方便,而不是实际的类型实例,你旋转起来的)锁定保留。 所以,我的直觉是,这是他们第一次创建的系统的一个有趣的小渣 - 需要“储备”在其中运行插槽每个实例。 直到后来他们才出来与使用相同的术语定价模型。

但同样,这只是一个猜测。

这样看来显然有此字的两层含义,没有出现被彼此相关的重叠。



文章来源: What is the purpose of 'Reservations' in Amazon EC2