使用boto在现有EBS卷上正确设置DeleteOnTermination

时间:2013-03-21 12:30:42

标签: amazon-web-services amazon-ec2 boto

挖掘代码(例如考虑this),我发现我可以使用以下方式读取属性:

instance.block_device_mapping['/dev/sdz'].delete_on_termination

...并使用以下方式切换:

instance.modify_attribute('blockdevicemapping', ['/dev/sdz=1']) # toggle on
instance.modify_attribute('blockdevicemapping', ['/dev/sdz']) # toggle off

但它是对称的,我觉得我缺少一些更高级别的功能。

不应该更像:

block_device_type = instance.block_device_mapping['/dev/sdz']
block_device_type.delete_on_termination = True
block_device_type.save() # I made this API up

1 个答案:

答案 0 :(得分:3)

您可以使用格式化字符串'%s=%d'的列表打开和关闭此设置。

切换到

>>> inst.modify_attribute('blockDeviceMapping', ['/dev/sda1=1'])

切换到关闭

>>> inst.modify_attribute('blockDeviceMapping', ['/dev/sda1=0'])

我在每次尝试使用以下命令更改设置后验证了python之外的更改:

$ aws ec2 describe-instance-attribute --instance-id i-7890abcd --attribute blockDeviceMapping
  1. 调用inst.modify_attribute('blockDeviceMapping', ['/dev/sda1'])(字符串缺少=0)没有产生任何变化。
  2. 分配给inst.block_device_mapping['/dev/sda1'].delete_on_termination也没有产生任何变化。

  3. 调用modify_attribute后,本地块设备对象上delete_on_termination的值不变。


    我在整个过程中完成:
    http://f06mote.com/post/77239804736/amazon-ec2-instance-safety-tweak-turn-off-delete-on