Як видалити EC2 AMI


43

Я знаю, що команда ec2-create-image instance-idбуде створювати зображення екземпляра ec2, створювати файл знімків та реєструвати як AMI. Але яка еквівалентна команда для видалення зображення, яка видалить пов'язані з ними файли знімків та дереєстрацію AMI?


Відповіді:


55

Оновлена ​​відповідь від aws docs:

  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.
André Hauptfleisch

ПРИМІТКА. Можливо, пройде кілька хвилин, перш ніж консоль видалить AMI зі списку. Виберіть «Оновити», щоб оновити статус.
Анікет Такур

7

Є , як правило , 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)

1
Перед видаленням AMI немає потреби припиняти екземпляри AMI. AMI використовується лише для запуску екземплярів, і вони можуть продовжувати функціонувати просто без нього. Однак якщо ви видалите AMI, а екземпляри не вдається, запустити екземпляри заміни без AMI може бути важко, тому будьте обережні.
Ерік Хаммонд

1
AWS рекомендував припиняти екземпляри для "повної очистки", однак, в принципі, це не повинно бути необхідним для видалення AMI. Мені цікаво, чи це може мати значення в деяких крайових випадках, оскільки обсяги EBS завантажуються "ліниво", якщо знімок видаляється незабаром після запуску екземпляра, але до того, як обсяг EBS повністю завантажиться, це може бути проблематично.
cyberx86

@ cyberx86: Якщо видалення знімка вплинула на створення нового тома, це було б більшою проблемою, ніж просто для видалення AMI. З огляду на те, скільки часу потрібно, щоб повністю заповнити об'єм із знімка, його слід легко перевірити знімком, повним даних.
Ерік Хаммонд

2
@EricHammond: швидкий пошук показує, що AWS, мабуть, не видалить знімок, поки дані не завантажуються, але все одно дозволить вам виконати видалення (імовірно, просто тримаєтесь на знімку, поки воно не знадобиться).
cyberx86

@ cyberx86: Як я підозрював, але приємно це знати точно. Дякуємо, що подивилися.
Ерік Хаммонд

1

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.