Как удалить EC2 AMI

Это звучит мне, как будто Помещение для проведения встреч не было правильно открыто как Ресурс так, чтобы это не могло быть двойное заказанный. Необходимо открыть Помещение для проведения встреч с реальным почтовым ящиком (не общедоступный календарь папки) и затем настроить ту учетную запись к "Автоматически снижению, конфликтующему приглашения на встречу".

43
задан 24 February 2016 в 03:51
5 ответов

Есть обычно 4 шага к тому, что вы ищете:

  1. Завершение экземпляров с помощью AMI (рекомендуется практика, особенно для AMI, поддерживаемых S3) [Не требуется перед удалением AMI любого типа]
  2. Отмена регистрации AMI с помощью ec2-deregister
  3. Удалите пакеты / снимки, поддерживающие AMI, используя ec2-delete-bundle (для S3) или ec2 -delete-snapshot (для EBS).
  4. Удалите тома EBS (если они не настроены на удаление при завершении, в этом случае они будут удалены на шаге №1). Это не обязательно для экземпляров, поддерживаемых S3. [Опять же, нет необходимости завершать экземпляры или удалять тома, если вы просто хотите удалить AMI.]

Имейте в виду, что снимки и изображения независимы. Вы можете создать том EBS из моментального снимка и использовать его как дополнительный диск, а не как загрузочный. Более того (в случае экземпляров Linux) можно создать новый образ из существующего снимка, что дает основания к идее, что не каждый, кто хочет удалить изображение, также хочет удалить связанный снимок (-ы). (Хотя вы можете зарегистрировать снимок для создания Windows AMI, AMI не запускается. )

Стоит отметить, что AWS не позволит вам удалить моментальный снимок, связанный с AMI, до отмены регистрации AMI.

Сосредоточившись на шагах 2 и 3 выше, вам сначала нужно найти связанные идентификаторы снимков. с AMI. Это должно быть указано как часть сопоставлений блочных устройств. Обычно корневой том EBS имеет точку монтирования / dev / sda1. Вы можете отменить регистрацию AMI из командной строки (или использовать консоль AWS), а затем удалить моментальный снимок (опять же, из командной строки или консоли AWS).

Если вам нужно выполнять эту задачу чаще, вы должны хочу сценарий процесса. Некоторые библиотеки, такие как Python Boto, включают функцию, которая делает именно это:

deregister_image(image_id, delete_snapshot=False)
    Unregister an AMI.

    Parameters: 
        image_id (string) – the ID of the Image to unregister
        delete_snapshot (bool) – Set to True if we should delete the snapshot associated with an EBS volume mounted at /dev/sda1

Например, образец сценария (полностью непроверенный и просто скомпонованный - используйте на свой страх и риск!), Основанный на приведенном выше, может выглядеть так:

#!/usr/bin/env python

import os
import sys

def ec2delete(imageid=None):
    conn = boto.ec2.connect_to_region('your_region', aws_access_key_id='your_key', aws_secret_access_key='your_secret') 
    conn.deregister_image(imageid, delete_snapshot=True)

if __name__ == '__main__':
    from optparse import OptionParser
    parser = OptionParser()

    options, args = parser.parse_args()
    sys.stderr.write("Deleting %s and snapshots\n" %  str(args))
    ec2delete(args)
7
ответ дан 28 November 2019 в 19:42

Обновленный ответ из документов aws:

  1. Откройте консоль Amazon EC2 по адресу https://console.aws.amazon.com/ec2/.
  2. В навигационной панели проверьте свой регион.
  3. На навигационной панели нажмите AMI.
  4. Выберите AMI, нажмите кнопку Действия, а затем нажмите кнопку Отменить регистрацию. Когда появится запрос на подтверждение, нажмите Продолжить.
  5. В навигационной панели нажмите Снимки.
  6. Выберите снимок, нажмите Действия, а затем нажмите Удалить. Когда появится запрос на подтверждение, нажмите Да, Удалить.

Надеюсь, это поможет таким, как я! :D

.
56
ответ дан 28 November 2019 в 19:42

awscli также может это сделать.

Сначала получите идентификатор шапшота, используя describe-images :

aws ec2 describe-images --image-ids ami-0123456789

Затем отмените регистрацию изображения и удалите снимок:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
1
ответ дан 28 November 2019 в 19:42
#!/bin/bash

#put your ami's in ami.txt

for i in `cat ami.txt`;
do

#put the regions in regions.txt

for r in `cat regions.txt`;do echo $r >>/dev/null;
for e in `cat regions.txt`;do aws ec2 describe-images --image-ids $i --region $r | grep "ImageId\|SnapshotId" | awk -F':' '{print $2}' | tr -d '"',',' | grep "snap" > snapshot.txt;
for s in `cat snapshot.txt`;do aws ec2 deregister-image --image-id $i --region $r;
aws ec2 delete-snapshot --snapshot-id $s --region $r;echo $i $s >> amidel.txt;done;done;
done;
done

#you can check the ami/snapshots which has been de-registered/deleted
0
ответ дан 2 March 2020 в 07:41

Несколько дней назад у меня было такое же требование, поэтому я написал небольшой сценарий оболочки. Примечание: файл ami_list.txt должен содержать список изображений

#!/bin/bash
while read -r ami_id
do
    if [[ -n "$ami_id" ]]; then
        echo "describing the image : $ami_id"
        describe_image=$(aws ec2 describe-images --image-ids "$ami_id") 
        response=$(echo "$describe_image"| jq  .Images[].BlockDeviceMappings[].Ebs.SnapshotId | jq . -r)
        aws ec2 deregister-image --image-id "$ami_id"
        for snapshot in $response; do 
            echo "$snapshot"
            aws ec2 delete-snapshot --snapshot-id "$snapshot"
        done
        unset describe_image
    fi
done  < ami_list.txt 

образец файла ami_list.txt:

$cat ami_list.txt
ami-12345220520df4893
ami-123455b848e35cf5a
0
ответ дан 23 August 2021 в 14:46

Теги

Похожие вопросы