Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在boto中创建AWS ami的正确语法是什么?_Python_Amazon Web Services_Boto - Fatal编程技术网

Python 在boto中创建AWS ami的正确语法是什么?

Python 在boto中创建AWS ami的正确语法是什么?,python,amazon-web-services,boto,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:]),

我用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的正确语法是什么?

正如您所提到的,您的语法是错误的。我没试过这个,但这应该能给你一个线索

类boto.ec2.blockdevicemapping.BlockDeviceMappingconnection=None

表示创建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, ....)

根据helloV的建议,我修改了代码,但最终的脚本有所不同。在boto not boto3中,不能将块\设备\映射包含到实例中。创建\映像,需要使用方法connection.create\映像。因此,工作代码如下:

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)

几乎正确,唯一需要使用ec2连接来创建具有boto中的块\设备\映射的图像。instance.create\u image没有用于块\u设备\u映射的选项。如果你改变,我会接受答案,谢谢