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