EC2 AMIを削除する方法


43

コマンドec2-create-image instance-idがec2インスタンスのイメージを作成し、スナップショットファイルを作成し、AMIとして登録することを知っています。しかし、関連するスナップショットファイルを削除し、AMIを登録解除するイメージを削除する同等のコマンドは何ですか?


回答:


56

AWSドキュメントからの更新された回答:

  1. https://console.aws.amazon.com/ec2/で Amazon EC2コンソールを開きます
  2. ナビゲーションバーで、地域を確認します。
  3. ナビゲーションパネルで、[AMIs]をクリックします。
  4. AMIを選択し、[アクション]をクリックして、[登録解除]をクリックします。確認を求められたら、[続行]をクリックします。
  5. ナビゲーションウィンドウで、[スナップショット]をクリックします。
  6. スナップショットを選択し、[アクション]をクリックして、[削除]をクリックします。確認を求められたら、[はい、削除します]をクリックします。

これが私のような人を助けることを願っています!:D


2
スナップショットを削除するベンジャミンスミスマックスの答えに数セントを追加するだけです。スナップショットを削除するには、まずコンソールでAMIの登録を解除する必要があります。
tarvinder91

3
それでもAMIレコードがハングする場合は、キャッシュをバイパスしてリロードを実行します。Windows:Ctrl + Shft + RまたはmacOS:⌘+⌥+R。
AndréHauptfleisch

注:コンソールがAMIをリストから削除するまでに数分かかる場合があります。更新を選択して、ステータスを更新します。
アニケットタクール

7

通常、探しているものに 4つのステップがあります。

  1. AMIを使用してインスタンスを終了します(特にS3がサポートされているAMIに推奨されるプラクティス) [あらゆるタイプのAMIを削除する前に必要ありません]
  2. を使用してAMIを登録解除する ec2-deregister
  3. ec2-delete-bundle(S3の場合)またはec2-delete-snapshot(EBSの場合)を使用して、AMIをバッキングするバンドル/スナップショットを削除します。
  4. EBSボリュームを削除します(終了時に削除するように設定されていない場合は、ステップ1で削除されます)。これは、S3でバックアップされたインスタンスには必要ありません。 [繰り返しますが、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)

1
AMIを削除する前に、AMIのインスタンスを終了する必要はありません。AMIは、インスタンスを起動するためにのみ使用され、インスタンスがなくても正常に機能し続けることができます。ただし、AMIを削除してインスタンスに障害が発生した場合、AMIなしでインスタンスを交換することは困難になる可能性があるため、注意してください。
エリックハモンド

1
AWSは、「完全なクリーンアップ」のためにインスタンスの終了を推奨していましたが、原則として、AMIを削除するためにインスタンスを必要とするべきではありません。ただし、EBSボリュームは「怠iに」ロードされるため、インスタンスの起動後すぐにスナップショットが削除されるが、EBSボリュームが完全にロードされる前に問題が発生する可能性があるため、エッジケースによっては問題になるかもしれません。
cyberx86

@ cyberx86:スナップショットの削除が新しいボリュームの作成に影響する場合、AMIを削除するだけの場合よりも大きな問題になります。スナップショットからボリュームを完全に作成するのにかかる時間を考えると、データがいっぱいのスナップショットで簡単にテストできるはずです。
エリックハモンド

2
@EricHammond:クイック検索は、AW​​Sがデータがロードされるまでスナップショットを削除しないように見えますが、削除を実行できるようにすることを示しています(おそらく、不要になるまでスナップショットを保持するだけです)。
cyberx86

@ cyberx86:私が疑ったように、確かに知ってうれしい。調べてくれてありがとう。
エリックハモンド

1

awscliはまた、これを行うことができます。

まず、次を使用してシャップショットIDを取得し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.