ฉันรู้ว่าคำสั่งec2-create-image instance-id
จะสร้างอิมเมจของอินสแตนซ์ ec2 สร้างไฟล์สแน็ปช็อตและลงทะเบียนเป็น AMI แต่อะไรคือคำสั่งที่เทียบเท่าเพื่อลบภาพซึ่งจะลบไฟล์สแนปชอตที่เกี่ยวข้องและการยกเลิกการลงทะเบียน AMI
ฉันรู้ว่าคำสั่งec2-create-image instance-id
จะสร้างอิมเมจของอินสแตนซ์ ec2 สร้างไฟล์สแน็ปช็อตและลงทะเบียนเป็น AMI แต่อะไรคือคำสั่งที่เทียบเท่าเพื่อลบภาพซึ่งจะลบไฟล์สแนปชอตที่เกี่ยวข้องและการยกเลิกการลงทะเบียน AMI
คำตอบ:
อัปเดตคำตอบจากเอกสาร aws:
หวังว่านี่จะช่วยให้ทุกคนอย่างฉัน! : D
โดยทั่วไปจะมี4 ขั้นตอนสำหรับสิ่งที่คุณกำลังมองหา:
ec2-deregister
ec2-delete-bundle
(สำหรับ S3) หรือec2-delete-snapshot
(สำหรับ EBS)โปรดทราบว่าภาพรวมและรูปภาพเป็นอิสระ คุณสามารถสร้างไดรฟ์ข้อมูล 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)
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