在python模块对流层,我收到一个错误" AttributeError:' module'对象没有属性' EBSBlockDeviceMapping'"

时间:2015-01-21 20:55:40

标签: python amazon-web-services troposphere

我遵循已经编写的其他一些代码的示例。有问题的代码如下所示:

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

2 个答案:

答案 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"'