我遵循已经编写的其他一些代码的示例。有问题的代码如下所示:
if virtualname == "ebs":
if deviceSize == None:
deviceSize = 8
if delOnTerminate == None or delOnTerminate == "true":
DOT = "true"
else:
DOT = "false"
lc.BlockDeviceMappings.append(ec2.EBSBlockDeviceMapping(
DeviceName=blockname,
Ebs=ec2.EBSBlockDevice(VolumeSize=deviceSize,
DeleteOnTermination=DOT)))
else:
lc.BlockDeviceMappings.append(ec2.BlockDeviceMapping(DeviceName=blockname,
VirtualName=virtualname))
答案 0 :(得分:0)
AttributeError
只有在你有一个类(在本例中是一个模块)并且引用一个不存在的属性时才会发生。它就像一个NameError
但是对象的属性。
您已导入import ... as ec2
等模块。标记为...
的模块没有名为EBSBlockDeviceMapping
的功能,因此当您在代码中调用它时,它会提供AttributeError
。
答案 1 :(得分:0)
这是有效的:
lc.BlockDeviceMappings.append(ec2.BlockDeviceMapping(
DeviceName = blockname,
Ebs=ec2.EBSBlockDevice(
VolumeSize = deviceSize,
DeleteOnTermination = DOT
)
)
)
正如Reticality所指出的,EBSBlockDeviceMapping不存在。相反,我只需要使用BlockDeviceMapping,ec2.EBSBlockDevice负责EBS设置。
哦是的,DOT的参数需要是一个布尔值,而不是一个字符串 使用' DOT = False'和' DOT = True'而不是' DOT =" false"'和' DOT =" true"'