boto3 Удаление снимков ec2 из списка - PullRequest
1 голос
/ 18 марта 2020

Я создаю список python, в котором хранятся идентификаторы снимков, которые не имеют заданного тега c. Можно ли автоматически удалить все эти снимки из списка?

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 и содержит только тот правильный снимок, который я хочу удалить.

Кто-нибудь может подтвердить, что это будет работать?

1 Ответ

1 голос
/ 18 марта 2020

Метод delete_snapshot() принимает только один идентификатор моментального снимка.

Вы должны либо l oop пройти через список идентификаторов снимков

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, чтобы проверить, работает ли он без фактического удаления снимков.

...