Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python boto3从列表中删除ec2快照_Python_Amazon Web Services_Amazon Ec2_Boto3_Snapshot - Fatal编程技术网

Python boto3从列表中删除ec2快照

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.

我正在创建一个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.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()?