2011-01-28 10 views
3

Я использовал CreateImageRequest, чтобы сделать снимок работающей машины EC2. При входе в EC2 консоли я вижу следующее:Снимки на Amazon EC2

  1. AMI - образ, который я могу запустить
  2. Volume - Я считаю, что это образ диска?
  3. Снимок - Еще одна запись, связанная с моментальным снимком?

Может ли кто-нибудь объяснить разницу в использовании каждого из них? Например, есть ли способ создать «моментальный снимок», не имея также связанного «AMI», и в этом случае, как я могу запустить копию моментального снимка EBS?

Наконец, существует простой API для удаления AMI и всех связанных данных (моментальный снимок, объем и AMI). Оказывается, наши скрипты хранят только идентификатор AMI, а не остальные данные, и поэтому кажется, что это достаточно информации, чтобы просто отменить регистрацию изображения.

ответ

7

AMI представляет собой конфигурацию запускаемой машины - она ​​фактически не содержит никаких данных машины, а просто ссылается на нее. AMI может получить образ своего диска либо с S3, либо (в вашем случае) с моментальным снимком EBS.

Объём EBS связан с экземпляром с кодом. Это в основном образ диска для чтения-записи. Когда вы завершаете экземпляр, том будет автоматически уничтожен (это может занять несколько минут, обратите внимание).

Снимок - это замороженное изображение тома EBS в момент времени, когда вы создали AMI. Снимки могут быть связаны с AMI, но не все моментальные снимки являются частью AMI - вы также можете создавать их вручную.

Более подробную информацию о AMI с поддержкой EBS можно найти в разделе the user's guide. Важно иметь четкое представление об этих концепциях, поэтому я рекомендовал бы дать всем пользователям руководство по чтению, прежде чем двигаться дальше.

Если вы хотите удалить все данные, связанные с AMI, вам нужно будет использовать API API DescribeImageAttribute для атрибута blockDeviceMapping AMI, чтобы найти идентификатор моментального снимка; затем удалите AMI и моментальный снимок в этом порядке.

+0

Можете ли вы добавить информацию о том, как удалить AMI через sdk? –

+0

@frinkenstein, это было бы лучше спросить в отдельном вопросе – bdonlan

+0

Я создал второй вопрос, связанный с этим, поскольку я думаю, что вопросы связаны: [Как я могу удалить изображение (AMI) в AWS EC2 с помощью SDK? ] (http://stackoverflow.com/questions/6512539/how-can-i-delete-an-image-ami-in-aws-ec2-using-the-sdk) –

1

Этот небольшой PS-сценарий принимает параметр AMI (хранится в переменной), захватывает моментальные снимки данного идентификатора AMI, сохраняя их в массиве и, наконец, выполняет требуемую очистку (отмените регистрацию удалите снимки).

# 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 
Смежные вопросы