2011-01-28 26 views
3

私はCreateImageRequestを使って、実行中のEC2マシンのスナップショットを撮った。私はEC2コンソールにログインすると、私は以下を参照してください。Amazon EC2のスナップショット

  1. AMI - 私は
  2. ボリュームを起動することができ、画像 - 私はこれはディスクイメージであることを信じますか?
  3. スナップショット - スナップショットに関連する別のエントリ?

誰でもこれらのそれぞれの使い方の違いを説明できますか?たとえば、関連する「AMI」を持たずに「スナップショット」を作成する方法はありますか?その場合、このスナップショットのEBSバックアップコピーを起動するにはどうすればよいですか?

最後に、AMIとすべての関連データ(スナップショット、ボリューム、AMI)を削除する簡単なAPIがあります。私たちのスクリプトはAMI識別子だけを格納し、残りのデータは格納していないことが判明したので、それは単に画像を登録抹消するのに十分な情報だと思われます。

答えて

7

AMIは、起動可能なマシン構成を表します。実際には、マシンのデータは含まれておらず、参照のみです。 AMIは、S3または(あなたの場合は)EBSスナップショットからディスクイメージを取得できます。

EBSボリュームは、インスタンスを実行しています。これは基本的に読み書き可能なディスクイメージです。インスタンスを終了すると、ボリュームは自動的に破棄されます(数分かかることがあります)。

スナップショットは、AMIを作成した時点のEBSボリュームの固定イメージです。スナップショットはAMIと関連付けることができますが、すべてのスナップショットがAMIの一部であるとは限りません。手動で作成することもできます。 EBS担保のAMIの

詳しい情報はthe user's guide.で見つけることができますこれらの概念についてよく理解することが重要ですので、私は全体のユーザーが先に進む前に、優れた読み取りオーバーを導く与えることをお勧めします。

AMIに関連するすべてのデータを削除する場合は、AMIのblockDeviceMapping属性でDescribeImageAttribute APIコールを使用してスナップショットIDを検索する必要があります。その順にAMIとスナップショットを削除します。

+0

sdkを使用してAMIを削除する方法についての情報を追加できますか? –

+0

@frinkensteinこれは別の質問でよりよく尋ねられるでしょう – bdonlan

+0

私はこの質問に関連すると思うので、この記事にリンクする2番目の質問を作成しました:[SDKを使用してAWS EC2の画像(AMI)を削除するにはどうすればよいですか? ](http://stackoverflow.com/questions/6512539/how-can-i-delete-an-image-ami-in-aws-ec2-using-the-sdk) –

1

この小さなPSスクリプトは、変数に格納されたAMIパラメータを受け取り、指定されたAMI IDのスナップショットをアレイに格納して取得し、最後に必要なクリーンアップを実行します(&のスナップショットを削除します)。

# Unregister and clean AMI snapshots 
$amiName = 'ami-XXXX' # replace this with the AMI ID you need to clean-up 
$myImage = Get-EC2Image $amiName 
$count = $myImage[0].BlockDeviceMapping.Count 

# Loop and store snapshotID(s) to an array 
$mySnaps = @() 
for ($i=0; $i -lt $count; $i++) 
{ 
$snapId = $myImage[0].BlockDeviceMapping[$i].Ebs | foreach {$_.SnapshotId} 
$mySnaps += $snapId 
} 

# Perform the clean up 
Write-Host "Unregistering" $amiName 
Unregister-EC2Image $amiName 
foreach ($item in $mySnaps) 
{ 
    Write-Host 'Removing' $item 
    Remove-EC2Snapshot $item 
} 

Clear-Variable mySnaps