Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AmazonEC2上的快照_Amazon S3_Amazon Ec2_Amazon Web Services_Cloud - Fatal编程技术网

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控制台时,我看到以下内容:

  • AMI-我可以启动的映像
  • 卷-我相信这是磁盘映像
  • 快照-与快照相关的另一个条目
  • 有人能解释一下每种用法的不同吗?例如,是否有任何方法可以创建“快照”,而不同时创建关联的“AMI”,在这种情况下,如何启动此快照的EBS备份副本


    最后,是否有一个简单的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