Tôi biết rằng lệnh ec2-create-image instance-id
sẽ tạo một hình ảnh của thể hiện ec2, tạo tệp ảnh chụp nhanh và đăng ký dưới dạng AMI. Nhưng lệnh tương đương để xóa hình ảnh sẽ xóa các tệp ảnh chụp nhanh liên quan và hủy đăng ký AMI là gì?
Tôi biết rằng lệnh ec2-create-image instance-id
sẽ tạo một hình ảnh của thể hiện ec2, tạo tệp ảnh chụp nhanh và đăng ký dưới dạng AMI. Nhưng lệnh tương đương để xóa hình ảnh sẽ xóa các tệp ảnh chụp nhanh liên quan và hủy đăng ký AMI là gì?
Câu trả lời:
Cập nhật câu trả lời từ các tài liệu aws:
Hy vọng điều này sẽ giúp bất cứ ai như tôi! :CƯỜI MỞ MIỆNG
Có thường 4 bước để những gì bạn đang tìm kiếm:
ec2-deregister
ec2-delete-bundle
(cho S3) hoặc ec2-delete-snapshot
(cho EBS).Hãy nhớ rằng ảnh chụp nhanh và hình ảnh là độc lập. Bạn có thể tạo âm lượng EBS từ ảnh chụp nhanh và sử dụng nó làm ổ đĩa thứ cấp thay vì ổ đĩa khởi động. Hơn nữa (trong trường hợp Linux), có thể tạo một hình ảnh mới từ một ảnh chụp nhanh hiện có - điều này cho thấy lý do rằng không phải ai muốn xóa hình ảnh cũng muốn xóa (các) ảnh chụp liên quan. (Mặc dù bạn có thể đăng ký ảnh chụp nhanh để tạo Windows AMI, nhưng AMI không thể khởi chạy được.)
Điều đáng chú ý là AWS sẽ không cho phép bạn xóa một ảnh chụp nhanh được liên kết với AMI trước khi bạn hủy đăng ký AMI.
Tập trung vào các bước 2 và 3 ở trên, trước tiên bạn cần tìm (các) ID ảnh chụp nhanh được liên kết với AMI. Điều này nên được liệt kê như là một phần của ánh xạ thiết bị khối. Thông thường, âm lượng EBS gốc có điểm gắn kết / dev / sda1. Bạn có thể hủy đăng ký AMI khỏi dòng lệnh (hoặc sử dụng bảng điều khiển AWS) và sau đó xóa ảnh chụp nhanh (một lần nữa, từ dòng lệnh hoặc bảng điều khiển AWS).
Nếu bạn cần thực hiện nhiệm vụ này thường xuyên hơn, bạn sẽ muốn kịch bản quy trình. Một số thư viện như Python Boto bao gồm một hàm để thực hiện chính xác điều này:
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
Ví dụ, một tập lệnh mẫu (hoàn toàn chưa được kiểm tra và chỉ được ghép lại với nhau - sử dụng rủi ro của riêng bạn!) Dựa trên những điều trên có thể giống như:
#!/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)
Các awscli cũng có thể làm điều này.
Đầu tiên lấy id shapshot bằng cách sử dụng describe-images
:
aws ec2 describe-images --image-ids ami-0123456789
Sau đó hủy đăng ký hình ảnh và xóa ảnh chụp nhanh:
aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210