我无法完全了解AWS中EBS快照和AMI之间的区别。我了解如何创建它们和术语(快照是卷的备份或连接到EC2实例的磁盘,而AMI是具有给定时间的快照的完整EC2实例的备份)。但是,我不确定快照中到底保存了什么。
假设我有一个安装了LAMP堆栈的EC2实例,并从数据库中获取了一些数据。我知道快照将保存我的所有数据和网站文件。创建新的EC2实例并附加快照支持的卷时,是否需要再次安装Apache,MySQL和PHP?还是全部保存在快照中?我不必担心必须为新的EC2实例重做安全设置,实例类型等,但是除非我有AMI,否则所有配置文件都会丢失。
答案 0 :(得分:3)
我了解如何创建它们和术语(快照是卷的备份或连接到EC2实例的磁盘,而AMI是具有给定时间快照的完整EC2实例的备份)
这是正确的,但不完全是。更好地理解这些概念可能总体上会对您有所帮助,所以就在这里。
快照表示原子时间精确获取的EBS卷的状态,您可以使用该时间来创建其他EBS卷。从快照创建的那些新EBS卷将以与拍摄快照时原始EBS卷完全相同的内容开始。因此,有点像“卷备份”。
不过,关于快照的一个非常重要的事情是,根据其他问题,您似乎仍然不见了,因为 快照是不可变的 。创建快照后,快照的内容将永远无法更改。
AMI 是图像-用于从中创建实例。它是一堆元数据,其中包括所需的虚拟机监控程序的类型,允许使用它的帐户,并最终包含应用于创建卷的EBS快照列表,以及将这些快照所创建的卷准确附加到何处。 / p>
因此,尽管“创建AMI”确实是某些人用来创建“完整EC2实例的备份”的策略,但这并不是一回事。
创建新的EC2实例并附加由快照支持的卷[...]
我认为您在这里混淆了一些概念。
从快照创建新的EBS卷时(通过直接创建EBS卷并选择快照,或通过使用AMI),这隐含意味着将根据快照中的指定从快照创建EBS卷。 (AMI代表的元数据), 该快照与新卷之间不再存在任何关系。 对卷所做的任何更改都完全独立于原始快照。请记住:快照是一成不变的。
因此,“我的快照支持的卷 ”这一概念可能无济于事:它们之间没有链接。
希望这很清楚,让我们继续...
当我创建新的EC2实例[...]时,是否必须再次安装Apache,MySQL和PHP?还是全部保存在快照中?
要在EC2实例中预安装的软件是由创建附加到实例的EBS卷时使用的快照的内容定义的。
换句话说,如果您从标准AMI(不是您创建的一个)中创建一个EC2实例,而该AMI没有预安装软件,则该软件将不会被安装。
如果从实例之前创建AMI,则安装所需的软件,则AMI(或更确切地说,由AMI引用的快照)将没有该软件,因此从该AMI创建的任何实例都不会随软件一起提供。
现在,您可能正在寻找以下内容:
如果您(1)创建一个实例,然后(2)安装该软件,然后才(3)您按此顺序创建AMI,则从该AMI创建的任何新实例将随软件一起提供,已安装。
要完全真正地理解这一点,最简单的方法是记住(A)快照是不可变的,并且(B)AMI是对快照的不可变引用。
所有这些说明,尽管创建自定义AMI确实是一种完全有效且流行的方法,可以解决您遇到的问题,但是还有另一种方法也完全有效且很流行,但是它更加灵活,值得研究。
无需创建和管理AMI (*),您只需使用用户数据脚本即可。
从本质上讲,它的作用是让您拥有一个脚本,该脚本将在新创建实例的首次启动上以root身份执行。该脚本通常用于安装软件,更新软件包,下载配置文件等。
这样,如果您需要更改软件版本或更改配置文件等,则无需经历管理AMI的所有复杂过程。相反,您只需更新脚本即可。
有关用户数据的更多信息,请查看:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
(*)“ 管理AMI ”:请记住,AMI是不可变的元数据集,其中包括对快照的引用,而快照也是不可变的。因此,如果您需要更改某些设置或安装新版本的软件,则需要创建新的AMI。这可能变得非常复杂且耗时。实际上,这里有大量工具,其中一些是由AWS提供的,有些是由其他公司提供的,它们试图简化创建和管理AMI的过程。因此,请注意,尽管可行,有效和流行,但这种方法可能会变得混乱!