挖掘代码(例如考虑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
答案 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
inst.modify_attribute('blockDeviceMapping', ['/dev/sda1'])
(字符串缺少=0
)没有产生任何变化。inst.block_device_mapping['/dev/sda1'].delete_on_termination
也没有产生任何变化。调用modify_attribute
后,本地块设备对象上delete_on_termination
的值不变。
我在整个过程中完成:
http://f06mote.com/post/77239804736/amazon-ec2-instance-safety-tweak-turn-off-delete-on