boto3 从列表中删除 ec2 快照

boto3 Deleting ec2 Snapshots out of List

我正在创建一个 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_ID,只存储我要删除的正确快照。

谁能确认这行得通吗?

delete_snapshot() 方法只接受一个快照 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来验证它是否有效,而无需实际删除快照。