是否可以用不同的 AMI 替换 EC2 实例上的 AMI?

Posted

技术标签:

【中文标题】是否可以用不同的 AMI 替换 EC2 实例上的 AMI?【英文标题】:Is it possible to replace the AMI on an EC2 instance with a different AMI? 【发布时间】:2019-03-10 07:34:15 【问题描述】:

我正在运行一个带有 LAMP 堆栈和 Laravel 的 EC2 AMI 实例。 我需要更新我的 LAMP 堆栈版本以及 Laravel 版本。 我正在考虑运行一个新的 EC2 实例作为我的更新过程的沙箱,并安装一个全新的 LAMP 堆栈 + Laravel,然后对我的 Laravel 代码库进行更改,以使我的所有代码都能与新的更新一起使用。 然后我可以从这个新实例中导出 AMI 并用新实例替换我已经运行的 EC2 的 AMI。这样我就不需要让我的客户和他们的客户更改任何东西,比如 IP 地址。 我不得不提一下,我对所有这些都是新手,所以请教我最好的方法。 谢谢!

【问题讨论】:

不,替换“AMI”实际上是创建新服务器的过程。如果 IP 地址的一致性是一个问题,那么您应该使用弹性 IP。 【参考方案1】:

答案是您无法替换现有 EC2 实例的 AMI。但是,您可以用基本相同的新卷替换根卷。新的根卷可以来自另一个 EC2 实例。我只是重复了这些步骤以验证这实际上可以完成。

创建第二个系统的根卷的快照。 将快照复制到与第一个系统相同的可用区。 从快照创建一个新卷。 分离旧的根卷。先贴标签,以防万一发生故障。 附加新的根卷。 启动实例并验证一切。

[更新]

我只是再次重复了这些步骤,但这次我在快照复制期间启用了加密。现在这是加密 EC2 实例的根卷的另一种方法。另一种方法是在启用加密的同时复制现有 AMI,但第二种方法是创建新实例。

【讨论】:

对不起,我提到我是 aws 新手,那么你所说的 AZ 是什么意思?具有新根卷的旧实例会保留其 IP 地址吗?从我的客户的角度来看会发生什么变化?如果我说这实质上意味着我正在使用新的根卷运行我的旧 ec2 实例并且新的根卷包含我新更新的 LAMP + Laravel 和我所有的 ew 代码,我是对的吗?谢谢! 可用区 - 这些是属于 AWS 区域的数据中心

以上是关于是否可以用不同的 AMI 替换 EC2 实例上的 AMI?的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 - 我从 AMI 映像克隆的实例上的 EBS 卷在哪里?

EC2 上的代码部署

EC2 t4g 实例 AMI

phpmyadmin 无法在亚马逊 ec2 实例上的 linux ami 中的 nginx Web 服务器上工作

AWS账户之间的克隆/传输EC2实例(AMI)

如何从我的 EBS 支持的 EC2 实例创建 AMI?