在boto中使用增加的房间体积大小来创建AWS ami的正确语法是什么?

时间:2018-10-31 18:07:12

标签: python amazon-web-services boto

我有用boto(不是boto3!)编写的程序。该程序成功创建了AMI,但是具有标准的根卷。我在boto3中添加了BlockDeviceMappings,但出现了很多错误。

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 :(得分:1)

就像您提到的那样,您的语法错误。我没有尝试过,但这应该可以给您一个提示。 boto.ec2.blockdevicemapping

  

class boto.ec2.blockdevicemapping.BlockDeviceMapping(connection = None)

代表创建ec2时BlockDeviceTypes的集合 实例。

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, ....)

答案 1 :(得分:0)

基于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)