Каков правильный синтаксис для создания AWS ami с увеличенным размером тома комнаты в boto? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть программа, написанная с помощью boto (не boto3!). Эта программа успешно создает AMI, но со стандартным корневым томом. Я добавил BlockDeviceMappings как в boto3, но получил кучу ошибок.

ami_id = instance.create_image(name=get_name("ami"),
                               description="MP\
                               %s" % (get_name("ami")[-3:]),
                               BlockDeviceMappings=[
            {
                'DeviceName': '/dev/sda1',
                'Ebs': {
                    'VolumeSize': 30,
                },
            },
        ],)

Проверен этот скрипт, неверный синтаксис. Какой будет правильный синтаксис в boto?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Основываясь на предложении helloV, я изменил код, но окончательный сценарий несколько отличается. В boto (не в boto3) нельзя включить block_device_mapping в instance.create_image, нужно использовать метод connection.create_image. Итак, рабочий код выглядит следующим образом:

dev_sda1 = BlockDeviceType()
dev_sda1.size = 30 # change root volume to 30GB instead of default
bdm = BlockDeviceMapping()
bdm['/dev/sda1'] = dev_sda1

ami_id = ec2_connection.create_image(instance.id, name="NewAmi,  description="NewAMI",
                               block_device_mapping=bdm)
0 голосов
/ 31 октября 2018

Как вы упомянули, ваш синтаксис неправильный. Я не пробовал это, но это должно дать вам подсказку. boto.ec2.blockdevicemapping

класс boto.ec2.blockdevicemapping.BlockDeviceMapping (connection = None)

Представляет коллекцию BlockDeviceTypes при создании ec2 экземпляры.

dev_sda1 = BlockDeviceType()
dev_sda1.size = 100 # change root volume to 100GB instead of default
bdm = BlockDeviceMapping()
bdm[‘/dev/sda1’] = dev_sda1
ami_id = instance.create_image(name='...', block_device_mapping=bdm, ....)
...