Снимки на Amazon EC2 - PullRequest
       16

Снимки на Amazon EC2

3 голосов
/ 28 января 2011

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 28 января 2011

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

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

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

Дополнительную информацию об AMI с поддержкой EBS можно найти в руководстве пользователя.* Важно хорошо разбираться в этих понятиях, поэтому я бы рекомендовал дать всем руководствам для пользователей хорошее прочтение, прежде чем идти дальше.

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

1 голос
/ 02 мая 2013

Этот небольшой сценарий 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
...