Python boto3从列表中删除ec2快照
我正在创建一个python列表,其中存储的快照ID没有特定的标记。是否可以自动删除列表中的所有快照Python boto3从列表中删除ec2快照,python,amazon-web-services,amazon-ec2,boto3,snapshot,Python,Amazon Web Services,Amazon Ec2,Boto3,Snapshot,我正在创建一个python列表,其中存储的快照ID没有特定的标记。是否可以自动删除列表中的所有快照 for snapshot in snapshots.filter(OwnerIds=['self']): # checking if PSP is set if (not costreferencetag_isset_snapshot(snapshot)): tag_snapshot = str(snapshot.id) Snapshot_ID.
for snapshot in snapshots.filter(OwnerIds=['self']):
# checking if PSP is set
if (not costreferencetag_isset_snapshot(snapshot)):
tag_snapshot = str(snapshot.id)
Snapshot_ID.append(tag_snapshot)
continue
else:
costreference_snapshot = get_costreference_snapshot(snapshot)
if costreference_snapshot not in managedpsp:
tag_snapshot = str(snapshot.id)
Snapshot_ID.append(tag_snapshot)
ec2.delete_snapshot(Snapshot_ID)
删除过程应该发生在代码示例的最后一行。
我现在无法真正测试它,因为这将删除我目前仍然需要使用的快照
该列表为Snapshot\u ID
,仅存储要删除的正确快照
有人能确认这是否有效吗?该方法只接受一个快照ID
您必须在快照ID列表中循环它
for s in Snapshot_ID:
ec2.delete_snapshot(SnapshotId=s)
或者删除它们,而不是将它们附加到列表中
for snapshot in snapshots.filter(OwnerIds=['self']):
# checking if PSP is set
if (not costreferencetag_isset_snapshot(snapshot)):
tag_snapshot = str(snapshot.id)
ec2.delete_snapshot(SnapshotId=tag_snapshot)
continue
else:
costreference_snapshot = get_costreference_snapshot(snapshot)
if costreference_snapshot not in managedpsp:
tag_snapshot = str(snapshot.id)
ec2.delete_snapshot(SnapshotId=tag_snapshot)
注意:您可以指定
DryRun=True
来验证它是否工作,而无需实际删除快照。非常感谢!我是否可以在for循环中实现ec2.snapshot.delete()
?这样他就可以删除循环的每个重复中的每个有效快照?所以这基本上就是你说的……是的。您还可以删除主for循环中的快照,将snapshot\u ID.append(tag\u snapshot)
替换为ec2.delete\u snapshot(SnapshotId=tag\u snapshot)
用于快照中的快照。过滤器(OwnerIds=['self']):if(而不是costreferencetag\u isset\u snapshot(snapshot)):ec2.snapshot.delete()继续其他操作:costreference\u snapshot=get\u costreference\u snapshot(快照),如果costreference\u snapshot不在managedpsp:ec2.snapshot.delete()?