답변:
AWS 문서에서 업데이트 된 답변 :
이것이 나를 좋아하는 사람을 돕기를 바랍니다! :디
일반적으로 찾고자하는 단계 는 4 단계입니다.
ec2-deregister
ec2-delete-bundle
(S3) 또는 ec2-delete-snapshot
(EBS)를 사용하여 AMI를 지원하는 번들 / 스냅 샷을 삭제하십시오 .스냅 샷과 이미지는 독립적입니다. 스냅 샷에서 EBS 볼륨을 생성하여 부팅 드라이브 대신 보조 드라이브로 사용할 수 있습니다. 또한 (Linux 인스턴스의 경우) 기존 스냅 샷에서 새 이미지를 생성 할 수 있습니다. 이는 이미지를 삭제하려는 모든 사람이 관련 스냅 샷을 삭제하고 싶지 않다는 생각에 근거가됩니다. (Windows AMI를 생성하기 위해 스냅 샷을 등록 할 수 있지만 AMI는 시작할 수 없습니다.)
AMI를 등록 취소하기 전에 AWS가 AMI와 관련된 스냅 샷을 삭제하도록 허용하지 않습니다.
위의 2 단계와 3 단계를 중심으로 먼저 AMI와 관련된 스냅 샷 ID를 찾아야합니다. 이것은 블록 장치 매핑의 일부로 나열되어야합니다. 일반적으로 루트 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)