Amazon s3 AmazonEC2上的快照
我使用Amazon s3 AmazonEC2上的快照,amazon-s3,amazon-ec2,amazon-web-services,cloud,Amazon S3,Amazon Ec2,Amazon Web Services,Cloud,我使用CreateImageRequest拍摄运行中的EC2机器的快照。当我登录EC2控制台时,我看到以下内容: AMI-我可以启动的映像 卷-我相信这是磁盘映像 快照-与快照相关的另一个条目 有人能解释一下每种用法的不同吗?例如,是否有任何方法可以创建“快照”,而不同时创建关联的“AMI”,在这种情况下,如何启动此快照的EBS备份副本 最后,是否有一个简单的API来删除AMI和所有相关数据(快照、卷和AMI)。事实证明,我们的脚本只存储AMI标识符,而不存储其余的数据,因此这似乎只足够取消注册
CreateImageRequest
拍摄运行中的EC2机器的快照。当我登录EC2控制台时,我看到以下内容:
最后,是否有一个简单的API来删除AMI和所有相关数据(快照、卷和AMI)。事实证明,我们的脚本只存储AMI标识符,而不存储其余的数据,因此这似乎只足够取消注册一个映像。AMI表示可启动的机器配置-它实际上不包含任何机器的数据,只是引用它。AMI可以从S3或(在您的情况下)EBS快照获取其磁盘映像 EBS卷与正在运行的实例相关联。它基本上是一个读写磁盘映像。终止实例时,卷将自动销毁(注意,这可能需要几分钟) 快照是创建AMI时EBS卷的冻结映像。快照可以与AMI关联,但并非所有快照都是AMI的一部分-您也可以手动创建它们 有关EBS支持的AMI的更多信息,请参阅。掌握这些概念非常重要,因此,我建议在进一步阅读之前,请仔细阅读整个用户指南
如果要删除与AMI关联的所有数据,则必须使用AMI的blockDeviceMapping属性上的API调用来查找快照ID;然后按顺序删除AMI和快照。这个小PS脚本获取AMI参数(存储在变量中),通过将给定AMI ID的快照存储到数组中来获取快照,最后执行所需的清理(注销并删除快照)
你能添加关于如何通过sdk删除AMI的信息吗?@frinkenstein,最好在一个单独的问题中提问我创建了第二个问题链接到这个问题,因为我认为这些问题是相关的:
# 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