วิธีการลบ EC2 AMI


43

ฉันรู้ว่าคำสั่งec2-create-image instance-idจะสร้างอิมเมจของอินสแตนซ์ ec2 สร้างไฟล์สแน็ปช็อตและลงทะเบียนเป็น AMI แต่อะไรคือคำสั่งที่เทียบเท่าเพื่อลบภาพซึ่งจะลบไฟล์สแนปชอตที่เกี่ยวข้องและการยกเลิกการลงทะเบียน AMI


คำตอบ:


55

อัปเดตคำตอบจากเอกสาร aws:

  1. เปิดคอนโซล Amazon EC2 ที่https://console.aws.amazon.com/ec2/
  2. ในแถบนำทางให้ยืนยันภูมิภาคของคุณ
  3. ในแผงการนำทางคลิก AMIs
  4. เลือก AMI คลิกการกระทำแล้วคลิกลงทะเบียน เมื่อได้รับการพร้อมท์ให้ยืนยันคลิกดำเนินการต่อ
  5. ในบานหน้าต่างนำทางคลิก Snapshots
  6. เลือกสแน็ปช็อตคลิกการกระทำจากนั้นคลิกลบ เมื่อได้รับการพร้อมท์ให้ยืนยันคลิกใช่ลบ

หวังว่านี่จะช่วยให้ทุกคนอย่างฉัน! : D


2
เพียงแค่เพิ่มไม่กี่เซนต์ในคำตอบของ Benjamin Smith Max เพื่อลบภาพรวม คุณต้องยกเลิกการลงทะเบียน AMI ก่อนในคอนโซลก่อนจึงจะสามารถลบสแนปชอตได้
tarvinder91

3
หากบันทึก AMI ของคุณยังคงค้างอยู่ให้โหลดซ้ำด้วยการเลี่ยงผ่านแคช: Windows: Ctrl + Shft + R หรือบน macOS: ⌘ + ⌥ + R.
André Hauptfleisch

หมายเหตุ: อาจใช้เวลาสักครู่ก่อนที่คอนโซลจะลบ AMI ออกจากรายการ เลือกรีเฟรชเพื่อรีเฟรชสถานะ
Aniket Thakur

7

โดยทั่วไปจะมี4 ขั้นตอนสำหรับสิ่งที่คุณกำลังมองหา:

  1. ยุติอินสแตนซ์โดยใช้ AMI (แนะนำให้ฝึกฝนโดยเฉพาะสำหรับ AMI ที่สนับสนุน S3) [ไม่จำเป็นก่อนที่จะลบ AMI ทุกประเภท]
  2. ยกเลิกการลงทะเบียน AMIs โดยใช้ 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 ดังนั้นโปรดระมัดระวัง
Eric Hammond

1
AWS ใช้เพื่อแนะนำการยกเลิกอินสแตนซ์สำหรับ 'การล้างข้อมูลให้เสร็จสมบูรณ์' อย่างไรก็ตามโดยหลักการแล้วไม่ควรจำเป็นสำหรับการลบ AMI ฉันสงสัยว่าอาจมีความสำคัญในบางกรณี แต่เนื่องจากปริมาณ EBS โหลด 'lazily' หากสแน็ปช็อตถูกลบหลังจากอินสแตนซ์ถูกเปิดใช้งานไม่นาน แต่ก่อนที่ไดรฟ์ข้อมูล EBS จะโหลดเต็มที่อาจเป็นปัญหา
cyberx86

@ cyberx86: หากการลบสแนปชอตมีผลต่อการสร้างโวลุ่มใหม่มันจะเป็นปัญหาใหญ่กว่าการลบ AMI เมื่อพิจารณาว่าต้องใช้เวลานานเท่าใดในการเติมปริมาณให้เต็มจากสแน็ปช็อตมันควรทดสอบได้ง่ายด้วยสแนปชอตที่เต็มไปด้วยข้อมูล
Eric Hammond

2
@EricHammond: การค้นหาอย่างรวดเร็วแสดงให้เห็นว่า AWS จะไม่ลบสแนปชอตจนกว่าข้อมูลจะโหลด แต่จะยังให้คุณทำการลบได้ (น่าจะเป็นเพียงการสแนปชอตจนกว่าจะไม่จำเป็น)
cyberx86

@ cyberx86: ตามที่ฉันสงสัย แต่ยินดีที่จะรู้แน่นอน ขอบคุณที่มองมัน
Eric Hammond

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.