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

43

Я знаю, что команда ec2-create-image instance-idбудет создавать образ экземпляра ec2, создавать файл снимков и регистрироваться как AMI. Но какова эквивалентная команда для удаления изображения, которая будет удалять связанные файлы снимков и отменять регистрацию AMI?

Джеймс В.
источник
Узнайте, как удалить частный ECI AMI из AWS
Aniket Thakur

Ответы:

56

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

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

Надеюсь, что это поможет любому, как я! : D

Бенджамин Смит Макс
источник
2
Просто добавьте несколько центов к ответу Бенджамина Смита Макса об удалении снимков. Прежде чем удалить снимок, необходимо сначала отменить регистрацию AMI в консоли.
tarvinder91
3
Если ваша запись AMI все еще зависает, просто выполните перезагрузку с обходом кеша: Windows: Ctrl + Shft + R или в macOS: ⌘ + ⌥ + R.
Андре Хауптфляйш
ПРИМЕЧАНИЕ. Прежде чем консоль удалит AMI из списка, может пройти несколько минут. Выберите Обновить, чтобы обновить статус.
Аникет Тхакур
7

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

  1. Завершите работу экземпляров с помощью AMI (рекомендуется практиковаться, особенно для поддерживаемых S3 AMI) [Не требуется перед удалением 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)
cyberx86
источник
1
Нет необходимости завершать экземпляры AMI перед удалением AMI. AMI используется только для запуска экземпляров, и они могут продолжать нормально функционировать без него. Тем не менее, если вы удалите AMI, и экземпляры завершатся неудачно, может быть трудно запустить заменяющие экземпляры без AMI, поэтому будьте осторожны.
Эрик Хаммонд
1
AWS рекомендовал завершать экземпляры для «полной очистки», однако, в принципе, он не должен быть необходим для удаления AMI. Мне интересно, может ли это иметь значение в некоторых крайних случаях, поскольку тома EBS загружаются «лениво», если моментальный снимок удаляется вскоре после запуска экземпляра, но до полной загрузки тома EBS это может быть проблематично.
cyberx86 10.10.12
@ cyberx86: Если удаление моментального снимка повлияло на создание нового тома, это будет более серьезной проблемой, чем просто удаление AMI. Учитывая, сколько времени занимает полное заполнение тома из моментального снимка, его легко проверить с помощью моментального снимка, заполненного данными.
Эрик Хаммонд,
2
@EricHammond: быстрый поиск показывает, что AWS, по-видимому, не будет удалять снимок до тех пор, пока данные не будут загружены, но все равно позволит вам выполнить удаление (предположительно, просто удерживая снимок, пока он не понадобится).
cyberx86
@ cyberx86: Как я и подозревал, но приятно знать наверняка. Спасибо за поиск.
Эрик Хаммонд
1

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

Сначала получите идентификатор shapshot, используя 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
Kristi
источник