我在这里发现了类似的问题,但是答案不是过时就是来自命令行。
情况是这样的。 我有一个使用实例存储的EC2实例(这是爱尔兰唯一可用于Debian 6的AMI)。 现在通过AWS GUI,我可以对实例卷进行快照,甚至创build一个卷。 但是从快照制作的图像无法启动。
克隆使用实例存储OR创build的快照的EC2实例从GUi awspipe理控制台启动新的EBS实例(相同的克隆)的最佳解决scheme是什么? 在解决这个问题之前,考虑一下如何通过awspipe理控制台来实现这个问题。
提示不能做不是一个合适的答案。 您可以创build实例存储支持的实例和/或卷的快照,并从该快照创buildAMI。
您无法对来自AWS控制台的实例存储卷上的数据执行任何操作。 这有一个很好的理由,我将在稍后介绍。
首先让我从你的问题中澄清几点:
情况是这样的。 我有一个使用实例存储的EC2实例(这是爱尔兰唯一可用于Debian 6的AMI)。
在EU-West-1(32位和64位)中有几个EBS根Debian 6 AMI。 其中一些可以在Debian Wiki上find。
现在通过AWS GUI,我可以对实例卷进行快照,甚至创build一个卷。 但是从快照制作的图像无法启动。
AWS所称的“快照”只能由EBS卷创build(请参见图片)。 从本质上来说,实例存储卷是短暂的 – 暂时的。 捕获实例存储卷状态的唯一方法是将文件捆绑在其上(与创build存档几乎一样) – 这些不是块级别的。 AWS控制台中提到的快照适用于EBS卷 – 它们是块级别的。 很有可能,您创build的快照是连接到实例的EBS卷,由于这不是根卷,因此尝试从中运行实例失败。

另外,您不能将实例存储卷添加到正在运行的实例。 实例存储是实例types的一个特征 – 它具有固定卷大小 (例如,不能添加15GB实例存储卷),只能在实例启动时添加(作为ec2-run-instances命令或者如果它内置到AMI中。
一般情况下,应该避免实例存储实例,除非您有充分的理由使用它们(通常是高IO,暂时性任务)
现在,试着回答一下你所问的一些问题:
克隆使用实例存储OR创build的快照的EC2实例从GUi awspipe理控制台启动新的EBS实例(相同的克隆)的最佳解决scheme是什么? 在解决这个问题之前,考虑一下如何通过awspipe理控制台来实现这个问题。
使用命令行。 在你认为我解雇你的问题之前,请允许我解释一下。 AWS不访问您的文件 – 您可以远程执行的任何操作都不需要知道实例上的实际内容。 因此,创build一个EBS快照发生在块级别 – 它不需要了解文件系统或读取卷上包含的文件的权限(想象一下,如果AWS需要能够读取所有可能的文件系统一个linux操作系统,这将是一个不可能的任务)。 另一方面,从实例存储卷创build“捆绑”的过程需要读取系统上的文件。 您将注意到,必须从相关实例运行ec2-bundle-vol (不像ec2-create-snapshot命令,该命令可以在不访问实例的情况下运行)。
命令行和API存在的原因有几个。 首先,它们对于自动化是至关重要的 – 不能编写“AWS控制台”脚本。 同样重要的是,它们提供了更广泛的select。 虽然AWS控制台一直都会不断添加新function,但由于某种原因,仍然有许多事情只能通过命令行完成。 select最适合你的东西,但不要因为两者都有用途而忽略命令行或GUI界面。
所以,由于控制台已被排除,您必须使用命令行继续。
选项1:
从现有实例创build一个新的实例存储AMI。 您将需要运行:
ec2-bundle-vol来创buildAMI
ec2-bundle -vol -d / mnt -k $ EC2_PRIVATE_KEY -c $ EC2_CERT -u USERID -s SIZE
ec2-upload-bundle将其保存到S3
ec2-upload-bundle -b BUCKETNAME -m MANIFESTFILE -a ACCESSKEY -s SECRETKEY
ec2-register注册AMI(最后一个可以从AWS控制台完成)。 
这绝对是最简单的方法,但个人而言,我不会去用它。 如果你要付出努力,那么你不妨全力以赴,转换成EBS。
选项2:
将您拥有的文件复制到EBS卷并根据该卷创build新映像。
您需要先创build一个新的EBS卷(与现有实例位于同一个可用区域中),然后将该卷附加到该实例。
注意:如果计划在不同的实例types上使用AMI,那么从/ etc / fstab中删除对临时存储的任何引用是一个好主意,因为每个实例types上可用的临时存储变化(通常挂载在/ mnt上)。
有两种方法,取决于你现在有什么。
如果您有一个捆绑的卷(例如,来自“选项1”),则可以对卷进行分解,然后使用dd将其复制到EBS卷上(您可能需要首先使用ec2-download-bundle ):
ec2-unbundle -m /local/path/to/manifest.xml -s SOURCE_DIRECTORY -d DESTINATION_DIRECTORY dd if = / path / to / image = / dev / NAME
否则,可以使用rsync将根卷上的文件复制到新的EBS卷。
mkfs.ext3 /dev/sdf ) mkdir /mnt/ebs && mount /dev/sdf /mnt/ebs ) sync ) rsync -aHAXxSP --exclude /mnt/ebs / /mnt/ebs )。 你可以改为使用dd ,但是对于已安装的源文件系统,rsync更好。 sync ) umount /mnt/ebs ) fsck /dev/sdf ) 从这里,您可以在AWS控制台中执行其他操作:创buildEBS卷的快照,并从该快照创buildAMI。 启动新的AMI以确保一切正常。