0

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

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

2 回答 2

0

仅当AttributeError您拥有一个类(在本例中为模块)并引用不存在的属性时才会发生这种情况。它就像NameError对象属性的但是。

你已经导入了一个像import ... as ec2. 标记的模块...没有一个名为 的函数EBSBlockDeviceMapping,因此当您在代码中调用它时,它会给出一个AttributeError.

于 2015-01-21T21:00:40.247 回答
0

这是有效的:

        lc.BlockDeviceMappings.append(ec2.BlockDeviceMapping(
                DeviceName = blockname,
                Ebs=ec2.EBSBlockDevice(
                    VolumeSize = deviceSize,
                    DeleteOnTermination = DOT
                    )
                )
        )

正如 Retality 所指出的,EBSBlockDeviceMapping 不存在。相反,我只需要使用 BlockDeviceMapping 并且 ec2.EBSBlockDevice 负责 EBS 设置。

哦,是的,DOT 的参数必须是布尔值而不是字符串,所以使用 'DOT = False' 和 'DOT = True' 而不是 'DOT = "false"' 和 'DOT = "true"'

于 2015-02-21T15:36:21.870 回答