Подтвердить что ты не робот

Какова цель "резервирования" в Amazon EC2

Я только начинаю изучать Amazon ec2. И я хочу услышать некоторые объяснения или, может быть, краткие примеры того, как и почему вам нужны "оговорки" в amazon ec2. Я использую python framework boto для управления Amazon Service. И до сих пор я действительно не вижу причин, почему у нас есть этот дополнительный шаг, чтобы получить ваши экземпляры, например:

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 (я не спрашиваю только о boto framework, конечно, ее предпочтительный, но в целом это означает в Amazon 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'>

Я не нашел полезных методов. Пожалуйста, объясните мне, зачем нам это нужно? Какая причина, по которой это должно быть? В каких случаях вы будете использовать его?

4b9b3361

Ответ 1

По моему мнению, оговорка - это акт запуска экземпляров. В основном, резервирование - это то, что вы делаете, в то время как экземпляр - это то, что вы получаете. Если вы запускаете несколько экземпляров с одного изображения с помощью run_instances(), вы делаете одно резервирование, но получаете несколько экземпляров.

run_instances вместе с Reservation.stop_all() позволяет запускать кучу экземпляров, дождаться их завершения задачи и затем остановить их всех сразу.

Ответ 2

Из boto docs:

Резервирование соответствует команде запуска экземпляров. Ты можешь видеть какие экземпляры связаны с бронированием:

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

Ответ 3

Это интересная тема и комментарии от Ryan Parman и Роуз Перроне - Я могу спросить Митча об истории в Re: Invent в этом году (2015), но если вы делаете какой-либо нормальный вид aws ec2 describe-instances (или эквивалент от boto, sdks и т.д.), вы увидите, что все экземпляры перечисляются как "оговорки" в каком-то общем смысле:

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

Внутри этих данных есть тип ReservationId типа r-12345bc8, но нигде это не соответствует резервированию, которое вы платите за блокировку в более низкой ставке (удобство биллинга, а не фактический тип экземпляра, который вы вращаете вверх). Поэтому моя догадка заключается в том, что это интересный небольшой остаток, когда они впервые создали систему - каждый экземпляр, необходимый для "резервирования" слота для запуска. Только позже они придумали модель ценообразования, которая использовала тот же термин.

Но опять же, это просто догадка.

Похоже, что здесь явно существует перекрытие двух значений слова, которые, как представляется, не связаны друг с другом.